| |
|
|
- Seite 1 - |
|
Thomas Freier | Hilfe, neues Problem und ich komme nicht weiter.
Wenn ich einen senkrechten Text editieren will, bleibt das EDIT nur erhalten, wenn der Rechtsklick am Wortanfang erfolgt oder die Maustaste gehalten und der Curser ins EDIT gezogen wird. Wie kann das behoben werden? KompilierenMarkierenSeparierenDEF GetSysColor(1) !"USER32","GetSysColor"
Def WindowFromPoint(2)!"USER32","WindowFromPoint"
Def GetCursorPos(1) !"USER32","GetCursorPos"
Declare p#,h&
Dim p#,8
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Def GetTextExtentPoint32(4) !"GDI32","GetTextExtentPoint32A"
Def ReleaseDC(2) !"USER32","ReleaseDC"
Def GetDC(1) !"USER32","GetDC"
declare x%,y%
Proc GetTextExtent
Parameters _t$,_w%
declare _size#,_text#,_result&,_hdc&
dim _text#,Len(_t$) + 1
dim _size#,8
String _text#,0 = _t$
_hdc& = GetDC(GetActiveWindow())
GetTextExtentPoint32(_hdc&,_text#,Len(_t$),_size#)
_result& = Long(_size#,4)
Case _w% : _result& = Long(_size#,0)
ReleaseDC(GetActiveWindow(),_hdc&)
dispose _text#
dispose _size#
return _result&
EndProc
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Def @Clienttoscreen(2) !"USER32","ClientToScreen"
Def @G2lx(0) @Long(C2sstrc#,0)
Def @G2ly(0) @Long(C2sstrc#,4)
Proc G2l
Parameters Hdl&
Clear C2sstrc#
@Clienttoscreen(%Hwnd,C2sstrc#)
x%=@G2lx()
y%=@G2ly()
Clear C2sstrc#
@Clienttoscreen(Hdl&,C2sstrc#)
x%=@G2lx()-x%
y%=@G2ly()-y%
Endproc
Declare C2sstrc#
Dim C2sstrc#,8
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SubClassProc
case SubClassMessage(h&, $201): PostMessage(h&, $A1, $2, 0)
Endproc
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Window 1000,600
WindowTitle "Objekte bewegen"
UseFont "Arial",16,0,0,0,0
var LV_Font&=CreateFont("Arial",15,0,0,0,0)
SETDIALOGFONT LV_Font&
Declare b.obj&[],b.x%[],b.x1%[],b.y%[],b.y1%[], b.text$[],b.lage$[]
Declare b.xn%
Declare pic1&
DrawPic "Hemmelsdorf.png",0,0;0
DrawText 10,10,"Verschieben nach Doppelklick links; " +
"NEU (Ändern) : Rechtsklick freie Fläche (Text).... mit RETURN oder Klick ins Fenster übernehmen."
b.xn%=1
b.x%[b.xn%]=720
b.y%[b.xn%]=140
b.text$[b.xn%]="K. Mustermann"
b.lage$[b.xn%]="W"
Boot_obj b.xn%
Subclass b.obj&[b.xn%],1
b.xn%=2
b.x%[b.xn%]=448
b.y%[b.xn%]=320
b.text$[b.xn%]="E. Wassermann"
b.lage$[b.xn%]="S"
Boot_obj b.xn%
Subclass b.obj&[b.xn%],1
b.xn%=2
While 1
WaitInput
Case %key=2:Break
Whileloop b.xn%
G2l b.obj&[&loop]
b.x%[&loop]=x%
b.y%[&loop]=y%
EndWhile
GetCursorPos(p#)
h&=WindowFromPoint(Long(p#,0),Long(p#,4))
Locate 0,0
if %MouseKey=2
x%=1
Whileloop b.xn%' Anzahl der Objekte
if Mouse(b.x%[&loop],b.y%[&loop] - (b.x%[&loop]+b.x1%[&loop]),(b.y%[&loop]+b.y1%[&loop]))
ShowWindow(b.obj&[&loop],0)
Element_Edit &loop' EDIT-Feld
Subclass b.obj&[&loop],1
x%=0
break
endif
wend
if x%=1
inc b.xn%
b.x%[b.xn%]=%MouseX
b.y%[b.xn%]=%MouseY
b.text$[b.xn%]=""
b.lage$[b.xn%]="W"
Element_Edit b.xn%
Subclass b.obj&[b.xn%],1
endif
endif
SetFocus(%HWND)
EndWhile
DeleteObject LV_Font&
DeleteObject pic1&
Whileloop b.xn%
Subclass b.obj&[&loop],0
EndWhile
Dispose C2sstrc#
Dispose p#
End
Proc Boot_obj
Parameters b.xi%
UseFont "Arial",(16+2),0,0,0,0
GetTextExtent b.text$[b.xi%],1'Textlänge
b.x1%[b.xi%] = &(0)+0'Länge
GetTextExtent b.text$[b.xi%],0
b.y1%[b.xi%] = &(0)+4'Höhe
If trim$(b.lage$[b.xi%]="S")'Länge+Höhe tauschen bei senkrecht
x%=b.y1%[b.xi%]
b.y1%[b.xi%]=b.x1%[b.xi%]
b.x1%[b.xi%]=x%
endif
MCls b.x1%[b.xi%], b.y1%[b.xi%] ,RGB(255,255,255)
StartPaint -1
TextColor @RGB(0,0,160), -1
If trim$(b.lage$[b.xi%]="W")
Set("Orientation", 0)
UseFont "Arial",16,0,0,0,0
DrawText 0, 2, b.text$[b.xi%]
ElseIf trim$(b.lage$[b.xi%]="S")
Set("Orientation", 2700)
UseFont "Arial",(16-1),0,0,0,0
DrawText b.x1%[b.xi%]-2, 0, b.text$[b.xi%]
Endif
Endpaint
Set("Orientation", 0)
pic1&=Create("hPic",0,"&MEMBMP" )
b.obj&[b.xi%]=Control("DIALOG","",$54001100,b.x%[b.xi%], b.y%[b.xi%], b.x1%[b.xi%], b.y1%[b.xi%],%hwnd,0,%hinstance,$0)
Create("Bitmap",b.obj&[b.xi%], pic1&,0, 0)
Endproc
Proc Element_Edit
Parameters b.xi%
var Element&= CreateEdit(%hwnd,b.text$[b.xi%],b.x%[b.xi%], b.y%[b.xi%], 120, 22)
SetFont Element&,LV_Font&
var Element1&=Create("GroupBox",%hwnd,"",(b.x%[b.xi%]+124), (b.y%[b.xi%]-8),80,30)
CreateText(Element1&,"",2,10,76,18)
var hor&=Create("RadioButton",%hwnd,"",(b.x%[b.xi%]+126),(b.y%[b.xi%]+5),12,12)
var t1&=CreateText(Element1&,"0°",18,11,14,16)
var sen&=Create("RadioButton",%hwnd,"",(b.x%[b.xi%]+166),(b.y%[b.xi%]+5),12,12)
var t2&=CreateText(Element1&,"90°",56,11,22,16)
SetFont hor&,LV_Font&
SetFont t1&,LV_Font&
SetFont t2&,LV_Font&
If trim$(b.lage$[b.xi%]="W")
SetCheck hor&,1
else
SetCheck sen&,1
EndIf
Setfocus(Element&)
SendString(Element&,"+({END})")'Text Markieren und Cursor ans Ende
Setfocus(Element&)
While 1
GetMessage
If GetFocus(%hwnd)
b.text$[b.xi%] = GetText$(Element&)
If GetCheck(hor&)
b.lage$[b.xi%]="W"
Else
b.lage$[b.xi%]="S"
EndIf
BREAK
Elseif IsKey(13) OR IsKey(27)
b.text$[b.xi%] = GetText$(Element&)
If GetCheck(hor&)
b.lage$[b.xi%]="W"
Else
b.lage$[b.xi%]="S"
EndIf
BREAK
endif
wend
DestroyWindow(Element&)
DestroyWindow(Element1&)
DestroyWindow(hor&)
DestroyWindow(sen&)
Boot_obj b.xi%' Textobjekt neu
EndProc
|
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
Jörg Sellmeyer | Ist sehr cool (bis auf die Tatsache, daß ich durch Deinen Code wieder nicht durchsteige...) Muß ich mir mal von XPSE übersetzen lassen. Kannst Du nicht der Community eine Option spendieren, daß XPSE-Code nach Profan übersetzt wird?
Bei Doppelklick auf ein Objekt gibt es übrigens einen Absturz. Allerdings erst, nachdem ich es verschoben habe. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.07.2010 ▲ |
|
|
|
|
| Das mit dem Doppelklick ist richtig, dort fehlt ein if objekt= vom typ text - Quelltext müsste nur weiter ausgebaut werden.
>> Profan übersetzt wird
Nimm den Code doch bitte wie er ist, welche Stelle ist denn unverständlich? |
|
|
| |
|
|
|
Jörg Sellmeyer | Ist schon ok - ich hab gar nicht dran gedacht, daß Profan ja jetzt auch Variablen ohne Postfix kennt. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.07.2010 ▲ |
|
|
|
|
Thomas Freier | Ja cool, und ich hatte schon schwere Kost alà "iFDRW V0.0.1" erwartet. Ich kann bei der korell.exe keine Objekte verschieben. Das Kreuz erscheint, aber keine weitere Reaktion. Die Abstürze einmal außeracht gelassen. Wenn ichs im Profancode umgesetzt habe, nehme ich mir das nächste Woche vor oder im Urlaub, falls keine Laxe bei diesen Wassertemperaturen aufsteigen. |
|
|
| |
|
|
|
| Hallo Thomas,
wenn es bei Dir abstürzt - ausser bei Doppelklick auf etwas anderes als Text - dann würde ich erst die Programmfehler finden wollen.
Ebenso sollten sich die Objekte mit der Maus einfach verschieben lassen.
Wenn das bei Dir nicht funzt, dann wüsste ich gerne, weshalb bzw. was genau da schief läuft.
>> Wenn ichs im Profancode umgesetzt habe,
Eigentlich wollte ich Dir Arbeit abnehmen und hatte Dir drum den Text gepinselt. ^^.. |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Thomas Freier | Hallo iF, der "Neubau" hat uns ja an dieser Stelle unterbrochen. Also, mit der Koroll.exe kann ich nur neue Objekte erstellen aber keine bewegen (gif). Also, script versucht zu starten und da den XProfan Compiler durch XPSE ersetzt. Ist das Richtig?. Leider kommt gleich die Meldung: "Definition im Header fehlt: GETSCROLLPOS(" . Hier dann nach XPSE gesucht und nicht gefunden. Wie mach ich also weiter? |
|
|
| |
|
|
|
| > Also, mit der Koroll.exe kann ich nur neue Objekte erstellen aber keine bewegen (gif).
Du kannst Objekte einfach per Maustaste anfassen und verschieben - hat bisher auf keinen meiner Computer nicht funktioniert. Sollte das bei Dir nicht funktionieren dann läge mir unbedingt etwas daran zu wissen was bei Dir schief läuft. Die Objekte können auch animiert sein - die Engine beliebig zu erweitern biete ich Dir gerne an. (Mir aber momentan Zeh ziemlich wehtut)
> Also, script versucht zu starten und da den XProfan Compiler durch XPSE ersetzt. Ist das Richtig?
Auf keinen Fall!
Man kopiert xpse einfach ins XProfanverzeichnis wo auch z.B. die profan.exe und XProfan-Kompiler liegen und in der IDE gibt man XPSE als Kompiler an oder man stellt ihn als Werkzeug ein. Aufruf ganz normal xpse.exe quelltext.datei. Von XProfan ersetzt wird da nichts und auch nichts überschrieben, XPSE gibt doch seine verrichtetet Arbeit an den XProfan-Kompiler weiter weshalb dieser nicht fehlen darf. (Was XPSE aber auch anmeckert wenn kein XProfan-Kompiler gefunden...) |
|
|
| |
|
|
|
| Nachtrag vom Handy ausm Bett hehe: xpse hat seine feste Adresse unter [...] und ist auch bei den Helfern zu finden. |
|
|
| |
|
|
|
Thomas Freier | iF, erst einmal flotte Genesung. Objekte verschieben ist von meiner Seite auf den Herbst vertagt. Hat also Zeit! Werde es weiter testen wie es kommt. Ich kann auf meinen Laptops mit XP SP2 kein Objekt verschieben. Es kommt das Curserkreuz, das Objekt hat den Focus und das war's. Merkwürdiger Weise habe ich unter XP Tablet keine Abstürze. Da kann ich zigmal Objekte aktivieren und versuchen sie zu verschieben, neu anlegen, Text ändern und löschen. Eigentlich sind deine Programme doch neutral. Hier verstehe ich die PC-Welt nicht mehr. XPSE hatte ich zwischenzeitlich gefunden und die letzte Version in den XProfan11 - Ordner kopiert. |
|
|
| |
|
|
|
| >> iF, erst einmal flotte Genesung.
Danke, brauche ich wirklich.
>> Ich kann auf meinen Laptops mit XP SP2 kein Objekt verschieben.
Verstehe und kurios, hatte es auf XP SP2 programmiert - den Fehler finden wir aber bestimmt.
>> Es kommt das Curserkreuz, das Objekt hat den Focus und das war's.
Schonmal gut weil der "Focus" ebenso gemalt ist.
>> Merkwürdiger Weise habe ich unter XP Tablet keine Abstürze. >> Eigentlich sind deine Programme doch neutral. Hier verstehe ich die PC-Welt nicht mehr.
Da wären 2 Dinge die ich mir so im Hinterkopf als vlt. "verantwortlich" erkläre - wenn ich meinen Programmier-PC wieder unter den Fingern habe können wir vlt. testen. |
|
|
| |
|
|
|
Thomas Freier | iF, das hat Zeit. Bin ohnehin jetzt einige Wochen ohne Internet auf nördlicheren Spielwiesen: [...] und [...] . Und wenn du mit deinem Luna-Mobil spielst, sei nächstes Mal vorsichtiger oder ziehe Sicherheitsschuhe an. |
|
|
| |
|
|
|
| Danke! |
|
|
| |
|
|