Deutsch
Forum

Objekte verschieben

 
- 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?
KompilierenMarkierenSeparieren
DEF 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


35 kB
Hochgeladen:03.07.2010
Ladeanzahl184
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
02.07.2010  
 



 
- 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?
 
21.07.2010  
 




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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
22.07.2010  
 



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. ^^..
 
22.07.2010  
 



 
- 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?

158 kB
Hochgeladen:06.08.2010
Ladeanzahl118
Herunterladen
 
Gruß Thomas
Windows XP SP2, XProfan X2
06.08.2010  
 



> 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...)
 
09.08.2010  
 



Nachtrag vom Handy ausm Bett hehe: xpse hat seine feste Adresse unter  [...]  und ist auch bei den Helfern zu finden.
 
09.08.2010  
 




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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
10.08.2010  
 



>> 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.
 
10.08.2010  
 




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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
10.08.2010  
 



Danke!
 
10.08.2010  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

13.718 Betrachtungen

Unbenanntvor 0 min.
Thomas Zielinski07.04.2021
Peter Max Müller02.11.2017
RudiB.15.03.2016
ByteAttack05.08.2015
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (9x)
Thomas Freier (8x)
Jörg Sellmeyer (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie