Forum | | | | Detlef Tussing | hallo allen Profaner`n
hab schon wieder eine Frage, bei dem zusammenkopieren von verschiedenen Programmen mach ich jetzt 2 Fenster auf. Ich hätte aber gerne die ListBox im Fenster 1, und kein weiters Fenster. KompilierenMarkierenSeparieren1. Fenster
DEF GETSYSCOLOR(1) !USER32,GetSysColor
WINDOWSTYLE 31 47
WINDOWTITLE Test
WINDOW SUB(DIV(%MAXX,2),DIV(740,2)),SUB(DIV(%MAXY,2),DIV(500,2))-660,500
SETTRUECOLOR 1
CLS GETSYSCOLOR(1)15
SETDIALOGFONT 1
2.Fenster im 1. Fenster
dlg% = create(Dialog,%Hwnd,Test2,340,200,250,100)
CBox& = @Control(ComboBox,,$5421034E,10,10,200,200,Dlg%,2000,%hinstance)
End%=@createbutton(Dlg%,Auswahl,80,40,80,32)
Addfiles *.DAT
MoveListToChoice(CBox&)
und da ich auch neugierig bin, wüste ich gern was das $5421034E im 2. Fenster bedeutet. Ich habe das komplette Programm auf einen anderen Rechner kopiert, da sind die Fenster an einer andern Stelle als bei mir, hängt das mit der Einstellung der Grafikkarte zusammen? |
| | | | |
| | Jac de Lad | Um die Listbox ins erste Fenster zu quetschen müsstest du als übergeordnetes Handle %hWnd angeben (oder eben das Fenster wo sie hin soll).
$5421034E ist der Stil. Der setzt sich aus verschiedenen Werten (Attributen) zusammen, näheres dazu in der Hilfe unter Control(). |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 09.05.2007 ▲ |
| |
| | Rolf Koch | Hi Detlef,
bevor wir helfen können, bitten wir immer einen kompletten lauffähigen Code zu posten. Frage 1: Wieso nimmst Du immer Getsyscolor(1)? Da ist ja alles schwarz (bei mir ist Windownormal eingestellt) je nach Einstellung des Users. Frage 2: Welche Listbox? In Deinem Code sehe ich keine Listbox. Oder meinst Du die Combobox - unter Profan als Choicebox bekannt. Wenn die auf das erste Fenster soll, dann tausche doch einfach Dlg% gegen %hwnd aus. Das $xxxxxxx ist die Stilbeschreibung des Controls was erstellt wird. Frage 3: Was meinst Du mit anderer Stelle? Die Koordinaten des Hauptfensters sowie des Dialoges sind eingentlich festgelegt mit Deinen Angaben. Das Hauptfenster sehe ich, wird jedoch Bildschirmmittig ausgerichtet. Also sollte auch das Hauptfenster auf beiden Rechnern mittig dargestellt werden.
Nachtrag: Das mittige ist nicht mittig hab ich grad gesehen, denn es werden fixe Werte genommen. Und diese sind bei verschiedenen Auflösungen %maxx und %maxy halt verschieden. |
| | | | |
| | Detlef Tussing | Wie gesagt, habe aus vielen Prog`s eins gemacht. Da ich noch recht unerfahren bin, weis ich noch nicht über jeden Befehl bescheid. Darum können manche Befehle unsinnig oder wiedersprüchlich sein. Doch das prog läuft. |
| | | | |
| | Detlef Tussing | Dank eurer Hilfe hab ich das mit den 2 Fenstern geschafft,glaube auch das das Problem mit dem 2. Rechner gelöst ist. Wie nehm ich MAXX und MAXY wieder raus ? Brauch ich GETSYSCOLOR überhaubt um einen blauen Hintergrund zu haben? Wie kann ich bei der Passwortabfrage mit ENTER anstelle das Button Ok anklicken weiter kommen? KompilierenMarkierenSeparieren $P+
$H Windows.ph
Declare box1&, box2&,box3&,box4&,box5&,box6&,text1&,text2&,text3&,text4&,text5&,text6&,datname$,lesen%,name$
Declare relais1$,Relais2$,karte1%,n1%,n2%,Speicher%,ende%,schluss%,datum1$,zeit$
declare von$,bis$,text7&,text0&,Wähle$,cbox&,dlg%,end%,von%,bis%,text01&,n3$,x1%,x2%,xy%
declare exit&,e%,a$
declare edit&,vorgabe$
DEF GETSYSCOLOR(1) !USER32,GetSysColor
WINDOWSTYLE 31 47
WINDOWTITLE Apex Elektronik GmbH Grevenbroich Tel. 02181-24040
WINDOW SUB(DIV(%MAXX,2),DIV(740,2)),SUB(DIV(%MAXY,2),DIV(500,2))-400,150
SETTRUECOLOR 1
CLS GETSYSCOLOR(1)15
SETDIALOGFONT 1
exit& = CreateButton(%HWnd,Ok,150,50,100,35)
vorgabe$ =
edit& = CONTROL(Edit,vorgabe$,$54810020,150,20,100,25,%HWnd,0,%HInstance,$0200)
SetFocus(edit&)
whilenot e%
WaitInput
if GetFocus(exit&)
e% = 1
endif
wend
A$ = gettext$(edit&)
if a$=qwert
destroywindow(edit&)
destroywindow(exit&)
boxaufbau
else
end
endif
boxaufbau
proc lesen
if fileexists(name$) =0
speichern
return
endif
Assign #1,name$
reset #1
input #1,datum1$
input #1,zeit$
input #1,relais1$
input #1,karte1%
input #1,n2% 0=licht aus
input #1,von%
input #1,bis%
close #1
if n2% = 1
n3$=ein
else
N3$=aus
endif
n1%=relais1$
von$=von%
bis$=bis%
x1%=von%-15 wichtig für die Anzeige in der Choicebox siehe Zeile 36 & 37
x2%=bis%-5
@sendmessage(Box1&,$14E,n1%,0,0 ) 0,0 = erster eintrag, 1,0 = zweiter eintrag usw.
@sendmessage(Box2&,$14E,n2%,1,0)
@sendmessage(Box3&,$14E,x1%,0,0)
@sendmessage(Box4&,$14E,x2%,0,0)
settext text5&,Add$(Fahrzeug: ,name$)
settext text3&,add$(von: ,von$)
settext text1&,add$(Tor: ,relais1$)
settext text2&,add$(Licht : ,n3$)
settext text4&,add$(bis: ,bis$)
If n2%=1
showwindow(text3&,1)
showwindow(box3&,1)
showwindow(text4&,1)
showwindow(box4&,1)
showwindow(text6&,1)
showwindow(text7&,1)
showwindow(speicher%,1)
showwindow(schluss%,1)
elseif n2%=0
showwindow(text3&,0)
showwindow(box3&,0)
showwindow(text4&,0)
showwindow(box4&,0)
showwindow(text6&,0)
showwindow(text7&,0)
showwindow(speicher%,1)
showwindow(schluss%,1)
endif
SETFOCUS(%HWND)
endproc
proc Boxaufbau
DEF GETSYSCOLOR(1) !USER32,GetSysColor
WINDOWSTYLE 31 47
WINDOWTITLE Apex Elektronik GmbH Grevenbroich Tel. 02181-24040
WINDOW SUB(DIV(%MAXX,2),DIV(700,2)),SUB(DIV(%MAXY,2),DIV(500,2))-700,400
SETTRUECOLOR 1
CLS GETSYSCOLOR(1)15
SETDIALOGFONT 1
CBox& = @Control(ComboBox,,$5421034E,270,70,100,200,%Hwnd,2000,%hinstance)
End%=@createbutton(%Hwnd,Auswahl,280,116,80,20)
Addfiles *.DAT
MoveListToChoice(CBox&)
@Sendmessage(CBox&,$14E,0,0)
name$=@gettext$(cbox&)
text0&=createtext(%Hwnd,Feuerwehr Grevenbroich,240,30,170,20)
text1&=Createtext(%Hwnd,Tor:,200,253,50,20)
showwindow(text1&,0)
text2&=Createtext(%Hwnd,Licht:,360,253,70,20)
showwindow(text2&,0)
text5&=Createtext(%Hwnd,Fahrzeug,35,253,153,20)
showwindow(text5&,0)
text3&=Createtext(%Hwnd,von:,200,330,70,20)
showwindow(text3&,0)
text4&=Createtext(%Hwnd,bis: ,360,330,50,20)
showwindow(text4&,0)
text6&=createtext(%Hwnd,Hallenbeleuchtung,35,330,130,20)
showwindow(text6&,0)
text7&=createtext(%Hwnd,einschalten,520,330,80,20)
showwindow(text7&,0)
box1&=Create(choicebox,%Hwnd,0,280,250,50,500)
showwindow(box1&,0)
box2&=Create(choicebox,%Hwnd,0,450,250,50,500)
showwindow(box2&,0)
box3&=Create(choicebox,%Hwnd,0,280,327,50,500)
showwindow(box3&,0)
box4&=Create(choicebox,%Hwnd,0,450,327,50,500)
showwindow(box4&,0)
Speicher%=@Create(DefButton,%Hwnd,Speichern und weiter,115,400,155,40)
showwindow(speicher%,0)
schluss%=@Create(DefButton,%Hwnd,Speichern und Ende,345,400,155,40)
showwindow(schluss%,0)
AddChoice(box1&,0)
AddChoice(box1&,1) Tor
AddChoice(box1&,2)
AddChoice(box1&,3)
AddChoice(box1&,4)
AddChoice(box1&,5)
AddChoice(box1&,6)
AddChoice(box1&,7)
AddChoice(box1&,8)
AddChoice(box1&,9)
AddChoice(box1&,10)
AddChoice(box2&,aus)Licht aus
AddChoice(box2&,ein)Licht ein
AddChoice(box3&,15) von
AddChoice(box3&,16)
AddChoice(box3&,17)
AddChoice(box3&,18)
AddChoice(box3&,19)
AddChoice(box4&,5)
AddChoice(box4&,6) bis
AddChoice(box4&,7)
AddChoice(box4&,8)
AddChoice(box4&,9)
@sendmessage(Box1&,$14E,n1%,0,0 ) 0,0 = erster eintrag, 1,0 = zweiter eintrag usw.
@sendmessage(Box2&,$14E,n2%,0,0)
@sendmessage(Box3&,$14E,von$,0,0)
@sendmessage(Box4&,$14E,bis%,0,0)
SETFOCUS(%HWND)
WHILENOT ENDE%
if %key = 255
elseif getfocus(box1&)Relais1 Tor
relais1$=gettext$(box1&)
settext text1&,add$(Tor: ,relais1$)
elseif GETFOCUS(box2&)Relais2 Licht
relais2$=gettext$(box2&)
settext text2&,add$(Licht : ,gettext$(box2&))
If relais2$=ein
showwindow(text3&,1)
showwindow(box3&,1)
showwindow(text4&,1)
showwindow(box4&,1)
showwindow(text6&,1)
showwindow(text7&,1)
elseif GETFOCUS(box2&)Relais2
showwindow(text3&,0)
showwindow(box3&,0)
showwindow(text4&,0)
showwindow(box4&,0)
showwindow(text6&,0)
showwindow(text7&,0)
endif
elseif GETFOCUS(box3&)Zeit1
von$=gettext$(box3&)
settext text3&,add$(von: ,gettext$(box3&))
elseif getfocus(box4&)Zeit2
bis$=gettext$(box4&)
settext text4&,add$(bis: ,gettext$(box4&))
elseif getfocus(end%)Fahrzeug
name$=@gettext$(cbox&)
lesen
showwindow(box1&,1)
showwindow(text1&,1)
showwindow(box2&,1)
showwindow(text2&,1)
showwindow(text5&,1)
elseif getfocus(speicher%)Speichern und weiter
speichern
elseif getfocus(schluss%)Speichern und Ende
speichern
ende%=1
ENDIF
EndWhile
endproc
close #1
end
Proc Speichern
if relais2$=ein
n2%=1
elseif relais2$=aus
n2%=0
endif
if relais1$<=7
karte1%=1
else
karte1%=2
endif
if relais1$ =
relais1$=0
endif
von%=von$
bis%=bis$
Assign #1,name$
rewrite #1
Print #1,date$(3)
print #1,time$(0)
print #1,relais1$
print #1,karte1%
print #1,n2%
print #1,von%
print #1,bis%
close #1
endproc
|
| | | | |
| | Dieter Zornow | Du kannst auch das Fenster in jeder Farbe wählen indem du z. B. CLS RGB(255,0,0) schreibst so kannst du jede Farbnuance einstellen. Wenn du das Fenster zentrieren willst ist maxX und maxY schon richtig du hast in deiner Formel WINDOW SUB(DIV(%MAXX,2),DIV(740,2)),SUB(DIV(%MAXY,2),DIV(500,2))-660,500 einen Fehler muss heißen WINDOW SUB(DIV(%MAXX,2),DIV(740,2)),SUB(DIV(%MAXY,2),DIV(500,2))-740,500 den Wert 740 den du vorne dividierst muss natürlich auch dann hinten in der Größe angeben sonst kommt das Fenster nicht in die Mitte, absolute Positionen gibst du einfach z.B mit WINDOW 10,10 - 740,500 an
Viele Grüße aus Bangkok
Dieter |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 09.05.2007 ▲ |
| |
| | | @Hallo Detlef KompilierenMarkierenSeparieren Fenster kann mit zwei Massangaben immer zentriert angezeigt werden. Mit USEBRUSH und RECTANGLE kannst Du jede Farbe für den Hintergrund einstellen. GETSYSCOLOR ist auf 21 (glaube ich) Systemfarben festgelegt |
| | | | |
| | Frank Abbing | Hehe, CLS ist dem Horst wohl gerade entfallen... |
| | | | |
| | | @Frank Wofür CLS ? - Das Fenster wird mit WINDOW x,y-x2,y1 erstellt
CLS erstellt immer ein Fenster oben links mit der Grösse 640X480 - Diese Grösse habe ich in meinem Code nur als Beispiel angegeben. Beide Werte können nach Gutdünken geändert werden. Ich erstelle sogar meine Dialogfenster mit diesem Code. Nur muss hier bei KompilierenMarkierenSeparieren anstelle des Bindestriches natürlich ein Komma stehen. Gelle |
| | | | |
| | Detlef Tussing |
Danke, habt mir sehr geholfen.
schaut bitte noch mal in meine letzten Anfrage rein ,habe sie Editiert währen Ihr schon die Antworten gegeben habt |
| | | | |
| | | @Detlef
Habe Deinen Text laufen lassen. In der Anlage siehst Du den Erfolg. Mit Klick auf OK bendet sich das Programm |
| | | | |
| | Detlef Tussing | nicht nur mit klick auf den Button sondern auch mit Enter soll es beendet werden |
| | | | |
|
AntwortenThemenoptionen | 1.448 Betrachtungen |
ThemeninformationenDieses Thema hat 7 Teilnehmer: |