Optik Dialog

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14547
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Optik Dialog

Beitrag von brandelh » Mi, 28. Feb 2018 8:56

Nein, wir sind im Xbase-Forum ;-)

@Jimmy

Jan hatte den Link (als Zitat zu vorherigem Beitrag) zur Newsgroup gelinkt (4 oder 5 Beiträge früher), dort hat Peter Alderliesten ein Beispiel gepostet (von Alaska), dass den Fehler beim Linken gab.
Ich habe den beseitigt (#pragma auskommentiert, Vars auf NIL gesetzt) und 2 CMD Dateien beigefügt damit es einfacher wird.
styleView-HB.zip
verbessert
(18.42 KiB) 26-mal heruntergeladen
styleView-org.zip
Original
(17.78 KiB) 19-mal heruntergeladen
Mit der 1.90.355 und der aktuellen 2.00 habe ich das kompiliert und gestartet, was man da erkennen soll ... z.B. Captions im Zustand activate, disabled, inaktive etc.
Bei der 2.00 scheinen einige Einträge nicht richtig angezeigt zu werden ...

Aber der Nutzen erschließt sich mir nicht, ich habe allerdings auch keine Lust mich in den Code näher einzuarbeiten ;-)
Vermutlich wird intern die iVar StyleClass genutzt.
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Do, 01. Mär 2018 3:37

Jan hat geschrieben:
Mo, 26. Feb 2018 13:55
Wäre ja schön wenn es da irgend einen Workaround gäbe, wie man das gerade biegen kann.
wie findest du diese Optik
MDI_Style.jpg
MDI_Style.jpg (55.2 KiB) 811 mal betrachtet
wenn ja wäre die Lösung einfach

Code: Alles auswählen

#define VERSION_WIN7                6.01   

   IF VAL(OS(OS_VERSION)) > VERSION_WIN7
      oDlg2:useVisualStyle := .F.
      oDlg2:drawingArea:useVisualStyle := .T.
   ENDIF      
ich nehme dem Dialog den visual Style aber setzte ihn auf der o:DrawingArea.

damit behalten die Child ihre gewohnte Optik und die "Classic" Titlebar sieht ja so aus wie Windows 8 / 10
nur nicht die 3 Buttons rechts oben ... aber auch das kann man noch verändern siehe PDR 5147
gruss by OHR
Jimmy

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Optik Dialog

Beitrag von Jan » Do, 01. Mär 2018 5:53

Jimmy,

ich will das mal so sagen: Schön ist anders. Aber immerhin schon mal näher dran an der Windows 10-Optik.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Sa, 03. Mär 2018 6:34

na gut ... wenn es um schön geht heisst mein Rezept : Codejock SkinFrameWork

damit kann dein Kunde sich jeden gewünschtes Windows Theme für "seine" Xbase++ App wählen z.b. iTunes Optik :badgrin:
Apple_MDI.jpg
Apple_MDI.jpg (35.99 KiB) 767 mal betrachtet
hier gibt es kostenlos tausenden Windows Theme die man ausprobieren kann https://www.deviantart.com/
gruss by OHR
Jimmy

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Optik Dialog

Beitrag von Jan » Sa, 03. Mär 2018 7:27

Jimmy,

nein, sowas werde ich garantiert nicht machen. Das hat zwei Gründe: Ich möchte Fremdbibliotheken soweit möglich meiden. Und ich möchte, das meine Programme so aussehen, wie der Kunde sich das auf seinem Rechner in den Windows-Einstellungen konfiguriert hat. Ganz selten baue ich DInge ein die vom Windows-Standard abweichen, wie etwa die Zeilen- und Spaltentrenner in den Browses wieder einbauen - weil ich die platten unstrukturierten Teile von Windows 10 sowas von unübersichtlich finde. Aber sonst soll das bitte dem entsprechen, was das Betriebssystem und die Kundeneinstellungen vorgeben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Sa, 03. Mär 2018 8:51

moin,

ich wollte darauf hinaus "was" die runden Ecken ausmacht und "wie" man es (extrem) verbiegen kann wenn man will :badgrin:

die Aussage von Alaska betr. M$ ist ebenfalls nicht "vollständig" ... vielmehr sind es MDI Client Fenster "an und für sich"
schon bei "Windows Form" wurden MDI nicht "empfohlen" und bei WPF fehlt es ganz genau so wie bei UWP.
Table PC und Smartphone eignen sich nicht für MDI ... [-X

Frage : was spricht gegen "freie" Client Fenster :?:
gruss by OHR
Jimmy

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Optik Dialog

Beitrag von Jan » Sa, 03. Mär 2018 9:19

AUGE_OHR hat geschrieben:
Sa, 03. Mär 2018 8:51
Table PC [...] eignen sich nicht für MDI ...
Wieso denn das nicht? Klappt ganz hervorragend.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Sa, 03. Mär 2018 23:02

Jan hat geschrieben:
Sa, 03. Mär 2018 9:19
Wieso denn das nicht? Klappt ganz hervorragend.
ich sag ja nicht das es nicht geht aber für Table PC wurde ja extra die Kacheln / Metro Design eingeführt.

wie schon gesagt ist MDI eine Technik deren "Verwaltung" einiges extra benötigt und damit Probleme macht.
Windows Controls senden einen Event z.b. "Click" an "sein" Parent Fenster.

wenn nun das Fenster ein Child von einem Fenster ist ... wohin soll der Event gehen wenn ich z.b. das Hauptmenu erreichen will :?:

bei eine SDI App wie den Kacheln oder mit Metro Design liegen Fenster nie "übereinander" sondern links/rechts/oben oder unten angeordnet. der Programmierer muss also selbst für die "Verwaltung" sorgen und nicht mehr M$ :roll:

unter Xbase++ gibt es für die Technik die CLASS XbpSplitbar() womit sich die Grösse von "Flächen" verschieben lässt

SDI auf Xbase++ bezogen heisst : es muss alles über die o:DrawingArea:Childlist() erreichbar sein :!:
... dann gibt es auch kein Problem mit dem senden von Events und dem LayoutManager ;-)
gruss by OHR
Jimmy

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Sa, 03. Mär 2018 23:32

Frage : benötigst du bei den MDI Fenstern den "minimize" Button ?
MDI_NoMin.jpg
MDI_NoMin.jpg (34.03 KiB) 724 mal betrachtet
ein "maximize" / "restore" wäre ja immer noch über die Titlebar möglich.
kein API Trick sondern nur ein Wechsel mit o:SetParent() nach dem o:Create()
gruss by OHR
Jimmy

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Optik Dialog

Beitrag von Jan » Mo, 05. Mär 2018 6:10

AUGE_OHR hat geschrieben:
Sa, 03. Mär 2018 23:02
Jan hat geschrieben:
Sa, 03. Mär 2018 9:19
Wieso denn das nicht? Klappt ganz hervorragend.
ich sag ja nicht das es nicht geht aber für Table PC wurde ja extra die Kacheln / Metro Design eingeführt.
Undf? Mit Xbase++ schreibe ich ja keine WIndows 10-App. Sondern ein normales Desktop-Programm. Das sich keinen Deut um Kacheln kümmert. Füre ein Xbase++-Programm ist ein Tablet exakt das Gleiche wie ein normaler Monitor. Selbst das die Bedienung per Touch und Touchtastatur erfolgt ist dem vollkommen egal.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Mo, 05. Mär 2018 8:08

jeder kann Code schreiben wie er will ... ob nun veraltet oder nicht.
wenn jedoch eine Technik verwendet wird welche von M$ seit Windows 8/8.1 nicht mehr unterstützt wird dann muss man sich "jetzt" unter Windows 10 nicht wundern.

das man ein Table PC wie ein Desktop PC benutzen kann ist schon klar aber das Kachel / Metro Design ist ja dafür gedacht und die sind alle Vollbild und SDI. man kann auch ein Table PC "live um 90° drehen" ... was macht deine Xbase++ App dann auf dem Table PC :?:

aber egal ich will jetzt keine Grundsatz Diskussion entfachen sondern hätte lieber Antworten auf meine vorherigen Fragen
1.) was spricht gegen "freie" Client Fenster :?:
2.) was wäre mit dem letzten Design ( ohne Min/Max Button ) :?:
gruss by OHR
Jimmy

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13073
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Optik Dialog

Beitrag von Jan » Mo, 05. Mär 2018 8:57

Jimmy,

wie so oft vermischst Du hier Dinge, die überhaupt gar nichts miteinander zu tun haben. Was genau hat die Darstellung von Dialogen mit Windows 10 zu tun? Was haben Xbase++-Programme mit dem Kachelmodus zu tun. Genau. Überhaupt nichts.

Das MDI seit Windows 8 nicht mehr sauber unterstützt wird war mir jedenfalls bis jetzt neu. Und immerhin wird der Modus ja auch von Alaska weiterhin propagiert. Ich habe jedenfalls keine Warnung dazu gesehen. Es mag ja sein, daß das weggefallen ist. Dafür spricht die fehlende Unterstützung, die Alaska mir dazu gemeldet hatte.

Und über veralteten Code: Wer von uns hier schreibt denn immer noch in einer Sprachversion, die lt. Hersteller nicht für Windows 8/8.1/10 freigegeben ist und manche der Features auch eindeutig nicht unterstützt? ;-)

Um aber zur eigentlichen Sache zu kommen:

1) Ich brauche die schon. In irgend einer Weise. Ich switche zwischen verschiedenen Tabpages, und das Child-Dialogfenster muß bei jeder Tabpage an genau diese gebunden bleiben. Und auch nicht wegklickbar sein außer über den vorgegebenen Button, der den Dialog schließt.

2) Ich brauche dort nicht die Buttons in der rechten oberen Ecke. Der Child-Dialog soll nicht minimierbar sein,. Und wie in 1) geschrieben nur schließbar über den entsprechenden Button.

Wenn es einen Weg gibt, das ohne Wurschtelei, abwegige Trickserei, oder ähnliche Sperenzchen zu lösen, bin ich dabei. Ansonsten bleibe ich bei der Lösung, die Du zuerst vorgeschlagen hattest.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1026
Registriert: Mi, 28. Jul 2010 17:16

Re: Optik Dialog

Beitrag von ramses » Mo, 05. Mär 2018 10:21

Hallo Jan
Wenn es einen Weg gibt, das ohne Wurschtelei, abwegige Trickserei, oder ähnliche Sperenzchen zu lösen, bin ich dabei.
Ja den gibt es, die Lösung liegt zwar ausserhalb der Fragen -> stelle um auf Browser-Basierende Apps und du bist alle Sorgen definitiv los! Die Zukunft sind Web Apps ... leider ...

Gruss Carlo

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11424
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Optik Dialog

Beitrag von AUGE_OHR » Di, 06. Mär 2018 1:01

Jan hat geschrieben:
Mo, 05. Mär 2018 8:57
wie so oft vermischst Du hier Dinge, die überhaupt gar nichts miteinander zu tun haben.
du hast wegen MDI Dialog "Optik" gefragt und ich habe versucht zu erklären warum das "so" ist
Jan hat geschrieben:
Mo, 05. Mär 2018 8:57
in einer Sprachversion, die lt. Hersteller nicht für Windows 8/8.1/10 freigegeben ist
Alaska sagt viel ... alte Fehler kaschiert man am besten durch eine "neue" Version :badgrin:
alles basiert auf der Windows API und wenn noch veraltete API Calls in der v1.9x vorhanden sind werden wir es ja merken :^o

was neue Features :
ich sehe nichts was meine Xbase++ Apps schneller und stabiler machen sollte ...
oder gibt es keine Op's Lock Probleme mit der v2.x OHNE weitere Einstellungen :?:
Jan hat geschrieben:
Mo, 05. Mär 2018 8:57
1) Ich brauche die schon. In irgend einer Weise. I
2) Ich brauche dort nicht die Buttons in der rechten oberen Ecke.
zu 1.) es gibt ausser dem Parent auch noch einen Owner womit man einen Dialog "binden" kann ( o:moveWithOwner )
zu 2.) wie schon gesagt ohne API nur mit o:SetParent() umgestellt

Code: Alles auswählen

   oDlg2 := XbpDialog():new(AppDesktop(),oDlg1, aPos, aSize,,.F. )
   oDlg2:moveWithOwner := .T.    
   ...
   oDlg2:create()
   oDlg2:SetParent( oDlg1:DrawingArea )
   oDlg2:Show()
gruss by OHR
Jimmy

Antworten