Deutsch
Forum

Problem mit UserMessages

 

CB
Hi,
brauche mal wieder fachmännische Hilfe!

Habe zum einfacheren Handling mehrere EditControls in einem StaticControl zusammengefasst - nach folgendem Schema:
KompilierenMarkierenSeparieren
GroupBox5& = Create("GroupBox",%HWND,"",10,249,775,155)
GroupBox5& = Control("Static","",$50000009,10,258,775,148,%hwnd,3501,%Hinstance)  Control anlegen (weißer Rahmen)
WSText& = Create("Text",GroupBox5&,"WS :",8,12,32,17)
SetFont WSText&,Fett&
WS1& = Control("ComboBox","",$50000042,40,10,80,121,GroupBox5&,3013,%hinstance)
ClearList
AddString "ges. WS"
AddString "HWS"
AddString "BWS"
AddString "LWS"
AddString "HWS und BWS"
AddString "BWS und LWS"
AddString "HWS und LWS"
MoveListToChoice(WS1&)
ClearList
SendMessage(WS1&,$14E,0,0)
WS2& = Control("ComboBox","",$50000042,120,10,105,121,GroupBox5&,3014,%hinstance)
ClearList
AddString "frei"
AddString "klopfschmerzhaft"
MoveListToChoice(WS2&)
ClearList
SendMessage(WS2&,$14E,0,0)

Da liegen jetzt also EditControls auf einem Static und dieses wiederum auf einem Tabcontrol.

Soweit funktioniert auch alles.
Bloß habe ich seitdem das Problem, daß die Abfragen des Status der einzelnen Edits nicht mehr funktionieren. Zum Breakpoint komme ich gar nicht mehr.

Ausschnitt aus der Hauptschleife:
KompilierenMarkierenSeparieren
ElseIf &ULParam = WS1&                            WS1& abarbeiten

 $B

If HiWord(&UWParam) = $01                      Eintrag in WS1& gewählt

    If (GetText$(WS1&) <> "ges. WS")

        SetFocus(WS2&)
        SendMessage(WS2&,$14E,1,0)

    Else

        SetFocus(WS2&)
        SendMessage(WS2&,$14E,0,0)

    EndIf

EndIf

ElseIf &ULParam = WS2&

Case HiWord(&UWParam) = $01: SetFocus(WS3&)     Eintrag in WS2& gewählt

Die Konstruktion soll dem Anwender etliches an Herumklicken ersparen. Wenn er einen (bestimmten) Eintrag in einem Feld gewählt hat, werden andere Felder entsprechend gesetzt und der Focus auch gleich dorthin gesetzt.

Hat einer von Euch eine Idee, wo der Fehler liegen könnte?

So nebenbei: mit welchem Stil kriege ich einen Rahmen analog zu einer GroupBox zustande?

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
11.04.2005  
 




Rolf
Koch
Hi Christian,
[quote:d2b61bdc66]
So nebenbei: mit welchem Stil kriege ich einen Rahmen analog zu einer GroupBox zustande?
[/quote:d2b61bdc66]
Zumindest mal dazu:
Dann kuck doch in Roc, vielleicht gefällt Dir ein Rahmen, welcher so ähnlich aussieht.

Rolf
 
11.04.2005  
 



Christian - erfahrungsgemäß wird einem bei solch Problem selten geholfen - sei denn - Du erstellst mal eine kleinste-lauffähige Variante welche genau das Problem erzeugt.

So kamma schneller eine Lösung finden - statt erst selbst diesen Konstrukt auf die Beine zu stellen.

Ich weiß ich weiß - Du hofftest jemand löste bereits ein ähnliches Problem - aber auch die Lösung zuzuordnen ist anhand eines lauffähigen Beispieles einfacher.

Salve.
 
11.04.2005  
 




CB
Hi,
@iF: hast ja - wieder mal - recht.
Das wär ja so, als täte ich den Mechaniker fragen, warum die blöde Karre in jeder Kurve scheppert und hab das Ding zu Hause stehen. Aber irgendwie hatte ich halt wirklich gehofft...

Na gut, habe also meinen Code soweit gestrippt, daß mein Prob erkenntlich sein sollte und der Einfachheit halber die INC mit ALLEN Variablen- und sonstigen DEFs komplett mitgeliefert.
Einiges ist bei der Aufräumaktion dabei zuviel gelöscht worden, das tut aber nichts zur Sache.

Die Einträge unter Cor und Pulmo sind konventionell in einer Groupbox zusammengefasst und reagieren korrekt.
Aber die Einträge unter WS (Control SkelettGrp) tuns nicht mehr.

Mit ein Grund, weshalb ich die Edits in ein Control stellen will, ist, daß ich auch die elends vielen Einzeleinträge unter TAB3_AKTIV bzw. TAB3_INAKTIV loswerden möchte, und einfach b.B. die jeweiligen Controls aus- und einblende.

Wäre jedenfalls für nen Tip sehr dankbar.

Christian

18 kB
Hochgeladen:11.04.2005
Ladeanzahl65
Herunterladen
 
XProfan 8/9.1, Win XP, AMD 64/3200
11.04.2005  
 




CB
Hi,
habe leider einigen überflüssigen Code übersehen zu löschen. Das kann zu einer Fehlermeldung wegen fehlender Registry-Einträge führen.
Deshalb hier ne verschlimmbesserte Version.

Christian

12 kB
Hochgeladen:11.04.2005
Ladeanzahl54
Herunterladen
 
XProfan 8/9.1, Win XP, AMD 64/3200
11.04.2005  
 




Rolf
Koch
Hi Christian,
kann man mal sehen, dass man von Andreas Miethe wirklich lernen kann

Zuerst ganz oben (aber das hast Du glaube ich schon?):
KompilierenMarkierenSeparieren
SET("FASTMODE",1)

Dann darunter Deine Zeile erweitern (also um $4000):
KompilierenMarkierenSeparieren
Dann eine Proc erstellen (mein Lieblingstipp von Andreas):
KompilierenMarkierenSeparieren
Def CallWindowProc(5) !"USER32","CallWindowProcA"
Declare OldStaticProc&,UOldStaticProc&,dlg2&

Proc DummyCallback

    Parameters wnd&,msg&,wparam&,lparam&

    If msg& = $0111

        Usermessage an %hwnd schicken
        Sendmessage(%hwnd,$4000,0,lParam&)

    Endif

    Return CallWindowProc(OldStaticProc&,wnd&,msg&,wparam&,lparam&)

EndProc


Dein Static so erstellen:
KompilierenMarkierenSeparieren
SKELETTGrp& = Control("Static","",$64000000,10,258,775,148,%hwnd,3501,%Hinstance,$010000)  Control anlegen (weißer Rahmen)
OldStaticProc& = SetWindowLong(SKELETTGrp&,-4,ProcAddr(DummyCallback,4))
WSText& = Create("Text",SKELETTGrp&,"WS :",8,13,32,17)
SetFont WSText&,Fett&
......

Die Abfragen für das Sonderstatic bitte dann so abfragen:
KompilierenMarkierenSeparieren
If &ULParam = WS1&                            WS1& abarbeiten

    WAITINPUT	Nochmals warten, wegen ausklappen

    If (GetText$(WS1&) <> "ges. WS")

        SetFocus(WS2&)
        SendMessage(WS2&,$14E,1,0)

    Else

        SetFocus(WS2&)
        SendMessage(WS2&,$14E,0,0)

    EndIf

ENDIF


Und ich hoffe, dass ich nix vergessen habe und das Teil dann genauso gut läuft wie bei mir.

Rolf
 
11.04.2005  
 




CB
Hallo, Rolf!
Vielen Dank nochmal für Deine Mühe! Ich weiß nicht, ob Dich meine Nachricht gestern noch erreicht hat - das Ding funktioniert jedenfalls perfekt!
Schicke Dir abends, was ich alles daraus gemacht hab - wirst staunen!

Ciao, Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
12.04.2005  
 




Rolf
Koch
Das freut mich sehr.
Rolf
 
12.04.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.710 Betrachtungen

Unbenanntvor 0 min.
H.Brill20.05.2023
Axel Berse24.09.2019
jacdelad14.05.2019
Ernst28.04.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

CB (4x)
Rolf Koch (3x)
iF (1x)


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