Foro | | | | Christof Neuß | ¡Hola,
y aquí veces otra vez una Einsteigerfrage.
Yo habe una muy einfaches Ventana principal. Darin son sólo unos pocos Buttons y unos pocos Textos enthalten. Wenn el Anwender el Ventana vergrößert oder verkleinert debería sólo el enthaltenen Objetos entprechend größer oder kleiner voluntad (also prozentual para Ventana principal). Das kann También me gusta sólo después de el Suelte el botón del ratón tener lugar.
Grundsätzlich fange I, con ...%key=4 also el Ereignis de y verzweige en el Resize-Rutina. Dort debería Yo eigentlich sólo para todos enthaltenen Objetos el Position y el Größe neu conjunto. Como Yo esta berechne me está auch klar.
Was No klar es:
¿Cómo se puede Yo z.B. todos enthaltenen Objetos en una Array packen, así esta nacheinander abgearbeitet voluntad, sin dass Yo en una neuen Objeto daran denken muss, dieses en el Resize-Rutina einzubinden?
¿Cómo se puede Yo el akutelle Position des Objektes ermitteln, en entonces el neue Position a conjunto?
Tal vez Yo aber auch otra vez veces Tomaten en el Augen....
DANKE para jede Ayuda. KompilierenMarcaSeparación $P+
SET(ERRORLEVEL,0)
DECLARE RICHEDIT1&
DECLARE BUTTON1&,BUTTON2&,BUTTON3&,BUTTON4&,BUTTON5&,BUTTON6&,BUTTON7&,BUTTON8&
DECLARE Textfeld1&,ENDE%
DECLARE RADIOBUTTON1&, RADIOBUTTON2&
DECLARE Breite%, Hoehe%
DEF GETSYSCOLOR(1) !USER32,GetSysColor
VAR RZVersion$=X
VAR Arial16Fett&=Create(Font,Arial,16,0,1,0,0)
VAR Arial18Fett&=Create(Font,Arial,18,0,1,0,0)
WINDOWSTYLE 63
WINDOWTITLE Union Investment
WINDOW 143,41-756,587
CLS GETSYSCOLOR(15)
USEFONT ARIAL,16,0,0,0,0
SETDIALOGFONT 1
Breite%=Width(%HWND)
Hoehe%=Height(%HWND)
Hier kann ggf. Ihr Menü hin
BUTTON1& = CREATE(BUTTON,%HWND,--- Bitte zuerst RZ-Version wählen ---,0020,0025,0450,0030)
BUTTON2& = CREATE(BUTTON,%HWND,2. Union Investment-Volumina aus Internet ziehen,0020,0060,0450,0030)
BUTTON3& = CREATE(BUTTON,%HWND,3. Stammdaten zur Berichtserstellung erfassen,0020,0095,0450,0030)
BUTTON4& = CREATE(BUTTON,%HWND,4. Qualitative Fragen beantworten,0020,0130,0450,0030)
BUTTON5& = CREATE(BUTTON,%HWND,5. Analyseprogramm starten,0020,0165,0450,0030)
BUTTON6& = CREATE(BUTTON,%HWND,6. Auswertungsdatei versenden,0020,0200,0450,0030)
SetFont Button1&, Arial18Fett
SetFont Button2&, Arial18Fett
SetFont Button3&, Arial18Fett
SetFont Button4&, Arial18Fett
SetFont Button5&, Arial18Fett
SetFont Button6&, Arial18Fett
BUTTON7& = CREATE(BUTTON,%HWND,Drucken,0662,0517,0070,0030)
BUTTON8& = CREATE(BUTTON,%HWND,ENDE,0662,0199,0070,0030)
SetFont Button8&, Arial18Fett
RADIOBUTTON1& = CREATE(RADIOBUTTON,%HWND,BB3 ,0490,0165,0060,0030)
RADIOBUTTON2& = CREATE(RADIOBUTTON,%HWND,agree,0560,0165,0060,0030)
if RZVersion$=BB3
SetCheck RADIOBUTTON1&,1
SetText BUTTON1&, 1. Info-Abfragen erstellen
elseif RZVersion$=agree
SetCheck RADIOBUTTON2&,1
SetText BUTTON1&, 1. IDA-Abfragen erstellen
endif
Textfeld1& = CREATE(Text,%HWND,Bitte klicken Sie nacheinander die Buttons an.
Im unteren Textfeld werden Ihnen dann Hinweise
für die einzelnen Schritte gezeigt oder Daten abgefragt.,0490,0027,0254,0130)
SetFont Textfeld1&, Arial16Fett
RICHEDIT1& = CREATE(RICHEDIT,%HWND,,0018,0234,0716,-0277)
SETFOCUS(%HWND)
REPAINT
WHILENOT ENDE%
WAITINPUT
If %KEY=2 Schließ-X wurde geklickt
ENDE%= 1
ELSEIF %KEY=4 Größe wurde geändert
Resize()
ELSEIF CLICKED(BUTTON1&) BUTTON IDA-Abfragen oder Info-Abfragen
IF GetCheck(RADIOBUTTON1&)=1
HinweisText1BB3()
elseIf GetCheck(RADIOBUTTON2&)=1
HinweisText1agree()
else
MessageBox(Bitte zuerst RZ-Version wählen!!!,ACHTUNG,4144)
ENDIF
ELSEIF CLICKED(BUTTON2&) BUTTON
ELSEIF CLICKED(BUTTON3&) BUTTON
ELSEIF CLICKED(BUTTON4&) BUTTON
ELSEIF CLICKED(BUTTON5&) BUTTON
ELSEIF CLICKED(BUTTON6&) BUTTON
ELSEIF CLICKED(BUTTON7&) BUTTON
ELSEIF CLICKED(BUTTON8&) BUTTON
ENDE%=1
ELSEIF CLICKED(RADIOBUTTON1&)
SetText BUTTON1&, 1. Info-Abfragen erstellen
ELSEIF CLICKED(RADIOBUTTON2&)
SetText BUTTON1&, 1. IDA-Abfragen erstellen
ENDIF
ENDWHILE
DeleteObject Arial16Fett
DeleteObject Arial18Fett
PROC HinweisText1BB3
SetText Richedit1&,
Hier der eine Text
ENDPROC
PROC HinweisText1agree
SetText Richedit1&,
Und hier der andere Text
ENDPROC
PROC Resize
VAR BreiteFaktor!=Width(%HWND)/Breite%
VAR HoeheFaktor!=Height(%HWND)/Hoehe%
VAR NeuePosW%=0
VAR NeuePosS%=0
VAR NeueBreite%=0
V NeueHoehe% =0
ENDPROC
|
| | | | |
| | | | | | | |
| | RGH | ¡Hola,
así es:
1. Yo packe todos Elemente des Dialogs/Fensters en una dynamisches Array. Hier en el Ejemplo es el Array Elemente&[]
2. Yo necesidad zwei Apifunktionen y una Struktur:
GetWindowsRect ermittelt el Bildschirmposition uno Elementes y liefert zwei Eckpunkte zurück: Links Oben y Rechts Unten. Der erste Parámetro es el Handle des Elementes, el zweite el Adresse el Struktur para el beiden Punkte. Nach el Aifruf Es el Struktur gefüllt: In X1&/Y1& es el Punkt links oben y X2&/Y&2 el Punkt rechts unten. ACHTUNG: El Koordinaten beziehen se en el Bildschirm (%DeskTop) y no en unser Ventana (%Hwnd)! Hier kommt el zweie Función para Einsatz: MapWindowPoints rechnet el Koordinaten en: Der erste Parámetro es el ursprüngliche Bezugspunkt (en unserem Fall %DeskTop) y zweite el gewünschte Bezugspunkt (en unserem Fall %HWnd). Der dritte Parámetro enthält el Adresse uno Largo-Array con el umzurechnenden Punkten. In unserem Fall es el GROESSE# con zwei Punkten. Der letzte Parámetro Es el Anzahl el Punkte, also hier el 2. Groesse es una struktur el vier Largo-Werte para el zwei Punkte enthält y entspricht somit el Windows-Struktur RECT.
In el Procedimiento Resize se nun con GetWindowsRect para cada Element el Bildschirmposition ermittelt y MapWindowPoints en el %HWnd-Position umgerechnet. Dann se el neue Position y Größe bajo Berücksichtigung des Breite- y Höhefaktors errechnet y SetWindowPos gesetzt.
Hier el (algo abgespeckte, aber funktionsfähige) Programa:
$P+
SET("ERRORLEVEL",0)
DECLARE ENDE%
DECLARE Breite%, Hoehe%
DECLARE Elemente&[]
DEF GetSysColor(1) !"USER32","GetSysColor"
DEF GetWindowRect(2) !"USER32","GetWindowRect"
DEF MapWindowPoints(4) !"USER32","MapWindowPoints"
STRUCT Groesse = X1&, Y1&, X2&, Y2&
DECLARE Groesse#
DIM Groesse#, Groesse
WINDOWSTYLE 63
WINDOWTITLE "Union Investment"
WINDOW 143,41-756,587
CLS GetSysColor(15)
Breite%=Width(%HWND)
Hoehe%=Height(%HWND)
Elemente&[0] = CREATE("BUTTON",%HWND,"--- Bitte zuerst RZ-Versión wählen ---",0020,0025,0450,0030)
Elemente&[1] = CREATE("BUTTON",%HWND,"2. Union Investment-Volumina de Internet ziehen",0020,0060,0450,0030)
Elemente&[2] = CREATE("BUTTON",%HWND,"3. Stammdaten a Berichtserstellung erfassen",0020,0095,0450,0030)
Elemente&[3] = CREATE("BUTTON",%HWND,"4. Qualitative Fragen beantworten",0020,0130,0450,0030)
Elemente&[4] = CREATE("BUTTON",%HWND,"5. Analyseprogramm starten",0020,0165,0450,0030)
Elemente&[5] = CREATE("BUTTON",%HWND,"6. Auswertungsdatei versenden",0020,0200,0450,0030)
Elemente&[6] = CREATE("BUTTON",%HWND,"Drucken",0662,0517,0070,0030)
Elemente&[7] = CREATE("BUTTON",%HWND,"ENDE",0662,0199,0070,0030)
Elemente&[8] = CREATE("RADIOBUTTON",%HWND,"BB3 ",0490,0165,0060,0030)
Elemente&[9] = CREATE("RADIOBUTTON",%HWND,"agree",0560,0165,0060,0030)
SetCheck Elemente&[8],1
SetText Elemente&[0]," 1. Info-Abfragen erstellen"
Elemente&[10] = CREATE("Text",%HWND,"Bitte clic Sie nacheinander el Buttons a.",0490,0027,0254,0130)
'+
'Im unteren Textfeld voluntad Ihnen entonces Hinweise
'+ para cada Schritte gezeigt oder Daten abgefragt.
Elemente&[11] = CREATE("RICHEDIT",%HWND,"",0018,0234,0716,-0277)
SETFOCUS(%HWND)
REPAINT
WHILENOT ENDE%
WAITINPUT
If %KEY=2'Schließ-X wurde geklickt
ENDE%= 1
ELSEIF %KEY=4'Größe wurde geändert
Resize()
ELSEIF CLICKED(Elemente&[0])'BUTTON IDA-Abfragen oder Info-Abfragen
IF GetCheck(Elemente&[8])=1
HinweisText1BB3()
elseIf GetCheck(Elemente&[9])=1
HinweisText1agree()
más
MessageBox("Bitte zuerst RZ-Versión wählen!!!","ACHTUNG",4144)
ENDIF
ELSEIF CLICKED(Elemente&[1])'BUTTON
ELSEIF CLICKED(Elemente&[2])'BUTTON
ELSEIF CLICKED(Elemente&[3])'BUTTON
ELSEIF CLICKED(Elemente&[4])'BUTTON
ELSEIF CLICKED(Elemente&[5])'BUTTON
ELSEIF CLICKED(Elemente&[6])'BUTTON
ELSEIF CLICKED(Elemente&[7])'BUTTON
ENDE%=1
ELSEIF CLICKED(Elemente&[8])
SetText Elemente&[0], "1. Info-Abfragen erstellen"
ELSEIF CLICKED(Elemente&[9])
SetText Elemente&[0], "1. IDA-Abfragen erstellen"
ENDIF
ENDWHILE
PROC HinweisText1BB3
SetText Elemente&[11],"Hier el una Text"
ENDPROC
PROC HinweisText1agree
SetText Elemente&[11],"Und hier el otro Text"
ENDPROC
PROC Resize
VAR BreiteFaktor! = Width(%HWND)/Breite%
VAR HoeheFaktor! = Height(%HWND)/Hoehe%
Breite%=Width(%HWND)
Hoehe%=Height(%HWND)
VAR NeuePosW%=0
VAR NeuePosS%=0
VAR NeueBreite%=0
VAR NeueHoehe%=0
WhileLoop 0, SizeOf(Elemente&[])-1
GetWindowRect(Elemente&[&bucle], Groesse#)
MapWindowPoints(%DeskTop, %HWnd, Groesse#, 2)
With Groesse#
NeuePosW% = Int(.X1& * BreiteFaktor!)
NeuePosS% = Int(.Y1& * HoeheFaktor!)
NeueBreite% = Int((.X2& - .X1&) * BreiteFaktor!)
NeueHoehe% = Int((.Y2& - .Y1&) * HoeheFaktor!)
EndWith
SetWindowPos Elemente&[&bucle] = NeuePosW%, NeuePosS% - NeueBreite%, NeueHoehe%
EndWhile
ENDPROC
Saludo Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 11.02.2009 ▲ |
| |
| | Christof Neuß | Ups,
hätte no pensamiento, dass dies así schwer es bajo XProfan. Eigentlich es doch muy profano.
Relacionado con la
getClientRect Yo no verstanden. Si divulgar correcto sehe, bekomme Todavía así sólo simplemente una Teil la ventana zurück. Yo brauche aber el Anfangskoordinaten z.B. des Richedit-Objektes.
Mein Gedankengang es folgender: Wenn Yo el akutellen Positionen y Größen el vorhandenen Objetos saber, kann el Koordinaten simplemente con el Vergrößerungs- (oder Verkleinerungs-)Faktoren para Breite y Höhe multiplizieren y habe así neue Anfangs- y Größenkoordinaten para cada Objeto. Jetzt bräuchte Yo esta sólo neu conjunto (Oh Mann, como macht uno una bestehenden Button porque simplemente größer? Yo muss todavía viel aprender en XProfan!) y luego neu anordnen. Fertig!
Aber así gehts probablemente no, oder?
Gracias trotzdem! Yo werd veces versuchen, mich durchzuwurschteln. Kann uno sí sólo Erfahrungen en recoger |
| | | | |
| | Christof Neuß | Hola Roland,
danke. Jetzt haben se Su Antwort y mein BlaBla überschnitten. Werde primero Su Antwort durcharbeiten... |
| | | | |
| | Christof Neuß | Das hilft bien más. Super. Gracias!
Puedo darauf aufbauen! |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |