 Unit GvWinDlg
 

Die Unit GvWinDlg dient der Erstellung von Dialogfenstern fr Graphics
Vision nach Dialogvorlagen, die aus Windows-Ressourcen geladen werden.
Dazu verwendet GvWinDlg Mechanismen der Unit WinRes.

 Unit GvWinDlg: Allgemeine Informationen 
 Unit GvWinDlg: Objekttypen              
 Unit GvWinDlg: Prozeduren und Funktionen

 Unit GvWinDlg: Allgemeine Informationen
 

Bitte beachten Sie, da sich Windows und Graphics Vision in der Behandlung
der Z-Ordnung unterscheiden. Zuletzt eingefgte Objekte liegen bei Windows
hinten, bei Graphics Vision vorne. Dadurch ergeben sich Inkomaptibilitten
bei einander berlappenden Kontrollelementen. Vermeiden Sie daher die
Verwendung derartiger Dialogfenster.

 Verweis: Unit GvWinDlg

 Unit GvWinDlg: Objekttypen
 

Windows untersttzt Schalt- und Markierungsfelder, deren Elemente
willkrlich im Dialog angeordnet sein knnen. Aus diesem Grunde definiert
GvWinDlg den abstrakten Objekttyp TSingleCluster, dessen Instanzen die
Elemente solcher freier Cluster bilden.

TSingleCluster-Objekte werden durch die Z-Ordnung und das Group-Flag
zu Gesamtheiten gruppiert. Setzen Sie das Group-Flag des ersten Elementes
auf TRUE, das der anderen Elemente auf FALSE. Dann verhalten sich die
Objekte zusammen wie ein Cluster-Objekt. Das erste Element arbeitet als
Data-Server; es verteilt die SetData-Daten auf die anderen Elemente bzw.
holt die Daten fr eine GetData-Operation. DataSize gibt fr den Server
die normale Cluster-Datengre zurck, fr die anderen Elemente 0.
Dadurch ist auch das Datenformat zu normalen Cluster-Objekten kompatibel.

Objekthierarchie:

 TCluster
 
  TMultiCheckBoxes
  TRadioButtons
  TCheckBoxes
     
      TSingleCluster
         
          TRadioButton
          TCheckBox

Bitte beachten Sie den vereinfachten Init-Konstruktor, der ohne die
NewSItem-Konstruktionen auskommt:

 constructor Init(var Bounds: TRect;
   Text: string; AGroup: Boolean);

Setzen Sie AGroup auf TRUE fr das erste Cluster-Element.

 Verweis: Unit GvWinDlg


 Unit GvWinDlg: Prozeduren und Funktionen
 

 Untersttzung nutzerdefinierter InitXXXX-
 Routinen fr neue Klassen
 

 GetControlRect  
 GetDialogRect   
 SetupInfo       
 XlatCmd         

 Vordefinierte InitXXXX-Routinen
 

 InitDialog      

 InitButton      
 InitEdit        
 InitListbox     
 InitStatic      

 Label-Verknpfungs-Routinen
 

 LinkIcon        
 LinkLabel       

 Dialog-Wake-Routine
 

 WakeDialog      

 Stream- und Klassen-Registration
 

 RegisterGvWinDlg


 Verweis: Unit GvWinDlg

 GetControlRect         (Unit GvWinDlg)
 

 procedure GetControlRect(var Bounds: TRect;
   Data: PControlData; Info: PDialogInfo);

Diese Prozedur wertet die geladenen Control-Daten unter Zuhilfenahme der
Dialog-Informationen aus und gibt in Bounds das umschlieende Rechteck
in Graphics-Vision- Dialogkoordinaten zurck.

GetControlRect wird in InitXXXX-Prozeduren fr Control-Klassen verwendet,
um Gre und Lage zu ermitteln.


 GetDialogRect          (Unit GvWinDlg)
 

 procedure GetDialogRect(var Bounds: TRect;
   Data: PDialogBoxHeader; Info: PDialogInfo);

Diese Prozedur wertet die geladenen Dialogfenster-Daten unter Zuhilfenahme
der zustzlichen Dialog-Informationen aus und gibt in Bounds das
Dialogfenster-Rechteck in Graphics-Vision- Koordinaten zurck.

GetDialogRect wird in InitXXXX-Prozeduren fr Dialogfensterklassen
verwendet, um Gre und Lage zu ermitteln.


 SetUpInfo              (Unit GvWinDlg)
 

 procedure SetupInfo(Data: PDialogBoxHeader;
   Info: PDialogInfo);

Diese Prozedur wertet die geladenen Dialogfenster-Daten aus und fllt die
Info-Struktur mit fr Graphics Vision spezifischen Informationen.

SetUpInfo wird in InitXXXX-Prozeduren fr Dialogfensterklassen verwendet,
bevor GetDialogRect aufgerufen wird und das Dialogfenster erstellt wird.


 XlatCmd                (Unit GvWinDlg)
 

 function XlatCmd(id: Word): Word;

Diese Funktion bersetzt Standard-Kommandos von Windows in Standard-Kommandos
von Graphics Vision.

XlatCmd wird bei der Auswertung von PushButton-Controls verwendet, um
TButton-Objekte zu erstellen.


 InitDialog             (Unit GvWinDlg)
 

 procedure InitDialog(Data: PDialogBoxHeader;
   Info: PDialogInfo);

Diese Prozedur erstellt einen Dialog des Typs TDialog und wird fr
Dialogvorlagen ohne Klasse verwendet.


 InitButton             (Unit GvWinDlg)
 

 procedure InitButton(Data: PControlData;
   Info: PDialogInfo);

Diese Prozedur wertet die Control-Klasse BUTTON aus und erzeugt
TButton-, TRadioButton- oder TCheckBox-Objekte. Das Objekt wird
in den Dialog eingefgt.


 InitStatic             (Unit GvWinDlg)
 

 procedure InitStatic(Data: PControlData;
   Info: PDialogInfo);

Diese Prozedur wertet die Control-Klasse STATIC aus und erzeugt
TStaticText- oder TLabel-Objekte. Das Objekt wird in den Dialog
eingefgt.


 InitEdit               (Unit GvWinDlg)
 

 procedure InitEdit(Data: PControlData;
   Info: PDialogInfo);

Diese Prozedur wertet die Control-Klasse EDIT aus und erzeugt
TInputLine-Objekte. Das Objekt wird in den Dialog eingefgt.


 InitListBox            (Unit GvWinDlg)
 

 procedure InitListBox(Data: PControlData;
   Info: PDialogInfo);

Diese Prozedur wertet die Control-Klasse LISTBOX aus und erzeugt
TListBox-Objekte. Das Objekt wird in den Dialog eingefgt.


 LinkIcon               (Unit GvWinDlg)
 

 procedure LinkIcon(Link: PGView;
   Control: PIcon);

Diese Prozedur erzeugt eine Verknpfung eines Icons mit einer View.

Beim Erzeugen von verknpfenden Objekten werden mittels InsertLink
Verknpfungsanforderungen gespeichert. Beim Erzeugen einer anderen View
werden diese Anforderungen durch einen Aufruf von CreateLinks erzeugt, indem
die LinkXXXX-Prozeduren aufgerufen werden.


 LinkLabel              (Unit GvWinDlg)
 

 procedure LinkLabel(Link: PGView;
   Control: PLabel);

Diese Prozedur erzeugt eine Verknpfung eines Labels mit einer View.

Beim Erzeugen von verknpfenden Objekten werden mittels InsertLink
Verknpfungsanforderungen gespeichert. Beim Erzeugen einer anderen View
werden diese Anforderungen durch einen Aufruf von CreateLinks erzeugt, indem
die LinkXXXX-Prozeduren aufgerufen werden.


 WakeDialog             (Unit GvWinDlg)
 

 procedure WakeDialog(Info: PDialogInfo);

WakeDialog wird aufgerufen, nachdem alle Views in den Dialog eingefgt
wurden. Dann ruft WakeDialog SelectNext(false) auf, um das erste Element
zu selektieren.


 RegisterGvWinDlg       (Unit GvWinDlg)
 

 procedure RegisterGvWinDlg;

RegisterGvWinDlg nimmt die Registration der Dialog- und Control-Klassen
mittels RegisterClass sowie die der Stream-Typen mittels RegisterType
vor.

Vor RegisterGvWinDlg mu InitClasses aufgerufen werden.


