DCREAD GUI Dialog zu groß

Moderator: Moderatoren

Antworten
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

DCREAD GUI Dialog zu groß

Beitrag von Peter Schweizer »

Hallo Wissende,
ich habe ein Problem beim Erstellen eines Browse-Dialogs.
Ich arbeite normal mit einer Zeilen/Spalten angabe in meinen Dialogen (nicht Pixelwerte)

Habe einen Grund GUI Dialog erstellt, auf dem meine Applikations-Dialoge ablaufen sollen. Diesen GrundDialog kann ich überall mit RootWindow() abfragen.
Nun rufe ich meine Function test() auf, in der ein DCBROWSE erscheinen soll.
Der erzeugte Dialog ist jedoch viel breiter als das Fenster, das mir RootWindow() zur Verfügungs stellt.
Die Höhe passt, jedoch die Breite ( es wären insg. 155 Spalten anzuzeigen) ist etwa 30% größer als das erzeugte Dialog-Fenster.
Durch verschieben des erzeugten Dialog-Fensters innerhalb des RootWindows kann alles angezeigt werden.
Die Horizontal-Scroll-Leise ist übrigens zu 100% ausgefüllt.

Kann jemand erkennen, was in der Fkt test() der Fehler sein könnte ?
Der Dialog müßte doch eigentlich durch die FIT Anweisung selbsständig die Größe reduzieren ?

Code: Alles auswählen

 
 FUNCTION test()
	LOCAL oDlg, GetOptions, GetList := {}
	LOCAL aFus :={}
	LOCAL nKopf := 1
	LOCAL oBrowse

	PRIVATE nColPixels := 10
        PRIVATE nRowPixels:= 20
    * -------------------------------------------------------------------------
	cAlias := ALIAS()
    * -------------------------------------------------------------------------
   	@ 0.1,0.1 DCBROWSE oBrowse;
			ALIAS cAlias;
			SIZE 79,23;
			FIT ;
			FREEZELEFT 1;
			PRESENTATION DC_BrowPres()
	*-------------------------------------------
	nSpalten := myBrowseSpalten(Getlist,@oBrowse,aReSpa)	// nun alle Spalten definieren
	* in nSpalten steht die Summe der benötigten Spalten (nicht PIXEL-Wert) zurückgegeben z.B. 155
	*-------------------------------------------
	* Forschleife innerhalb myBrowseSpalten()
	* 	DCBROWSECOL DATA  bFldBlock ;
	* 			  COLOR  bColor ;
	* 			  WIDTH  nDbfFeldBreite*nColPixels PIXEL ;
	* 			  PICTURE alltrim(aSpaDef[i,3]);
	* 			  HEADER  alltrim(aSpaDef[i,1]);
	* 			  PARENT oParent
	*-------------------------------------------
  	DCGETOPTIONS ;
      	        NOMINBUTTON NOMAXBUTTON ;
 	  	WINDOWHEIGHT 25*nRowPixels ;
      	        WINDOWWIDTH  80*nColPixels

	DCREAD GUI TITLE 'Test';
    	        PARENT @oDlg;
		APPWINDOW RootWindow();   // Grund-Dialog Fenster
    	        CLEAREVENTS;
		FIT;
		OPTIONS GetOptions;
    	        SETFOCUS @oBrowse
RETURN NIL
  
gruß Peter
Gruss Peter
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCREAD GUI Dialog zu groß

Beitrag von Wolfgang Ciriack »

Das FIT passt nur den Dialog auf die Größe der Elemente im Dialog an, da du beim Browse auch ein FIT hast, das Browse durch 155 Spalten aber wesentlich größer wird (durch das FIT beim Browse), ist das Fenster jedoch zu groß. Versuch mal FIT MAX xx, wobei xx die Pixelgröße Rootwindow / nColpixel ist.
Viele Grüße
Wolfgang
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: DCREAD GUI Dialog zu groß

Beitrag von Peter Schweizer »

Hallo Wolfgang,
vielen Dank für Deinen Tip. Er war jedoch nicht erfolgreich.
Nach systematische Suche bin ich auf ein tiefierliegendes Problem in meinen Programmablauf gestossen.

Das RootWindow() ist ein GUI.
Auf diesem Dialog wird ein CRT-Fenster erstellt, das dann wiederum meinen GUI Dialog, der zu groß definiert wird, aufruft.
Durch das einfügen von SETAPPWINDOW als DCREAD Parameter konnte ich das Problem lösen.

Code: Alles auswählen

	DCREAD GUI TITLE 'Test'
   		PARENT @oDlg;
		APPWINDOW RootWindow();
		SETAPPWINDOW;      // damit das Fenster sich nicht am CRTWindow orientier, sondern am RootWindow())
  		CLEAREVENTS;        //				FIT;
		OPTIONS GetOptions;
    		SETFOCUS @oBrowse
Peter
Gruss Peter
Antworten