AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Combobox ItemIndex=-1; Text ändern im Event

Ein Thema von StTüff · begonnen am 20. Jul 2007 · letzter Beitrag vom 23. Jul 2007
Antwort Antwort
Seite 3 von 3     123   
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#21

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 09:13
Hallo!

Ich habe mal ein kleines Testprojekt erstellt, dass die Problematik zeigen soll (anbei).
Es gibt eine Combobox bei der zwischen den Einträgen gewechselt werden kann (mit einer Dialogbox wird abgefragt, ob der Wechsel erfolgen soll, oder abgebrochen werden soll). Dabei wird immer der letzte Index gemerkt, so dass der Vorgang abgebrochen und auf den letzten Index zurückgesprungen werden kann.
Dies funktioniert für alle Einträge, nicht aber, wenn die Combobox auf dem Index -1 steht (ist beim Programmstart so und kann mit dem Button wiederhergestellt werden). Dabei wird der Text nicht gesetzt.
Damit der Anwender die Anzeige 'ungültig' nicht als Auswahl bekommt wurde das so gemacht (soll nur eine Info sein, die Programmgesteuert gesetzt werden kann; siehe auch Beschreibungen zuvor).

Wer Lust hat kann mal damit spielen. Bin gespannt, ob einer eine saubere Lösung für das Problem findet.
Ich bin inzwischen soweit, dass ich beinahe schon aufgebe... aber der Ehrgeiz... ich wills wissen

Gruß und viel Spaß beim tüfteln (das ist ja fast schon ein Wettbewerb ).

StTüff

PS: Gerade habe ich die Lösung von SirThornberry gesehen. Werde ich gleich mal testen....

=> Habe den Anhang wieder gelöscht, da weiter unten das Beispiel mit Lösung zu finden ist.
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#22

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 09:21
Jawohl... Die Lösung von SirThornberry funktioniert. Er hat damit den Wettbewerb gewonnen!

Anbei noch mal die komplette Lösung als Beispiel.

Gruß und vielen Dank für die Beteiligung (und natürlich die Lösung),

StTüff
Angehängte Dateien
Dateityp: zip testprojekt_combobox_196.zip (16,7 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#23

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 14:25
Zitat von StTüff:
Hallo Reinhard!

Habe folgenden Versuch unternommen:

    SendMessage(CoBo_Version.Handle, WM_SETTEXT, MAXBUF, Integer(@Buf)); Leider funktioniert es nicht (zumindest nicht zuverlässig).
Schade :(

Gruß,

StTüff
Hallo,

kann es auch garnicht: Sendmessage wartet ja, bis die Message verarbeitet ist. Deswegen habe ich ja geschrieben "mit PostMessage". Sind oft so die Kleinigkeiten.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 14:29
und bei PostMessage muss man aufpassen das der Buffer keine lokale Variable ist und nur auf dem Stack liegt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#25

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 14:32
Genau

Aber sonst wäre das leben ja auch zu lanweilig....

Selbstverständlich geht die hälfte des Ruhmes an Dich. SirThornberry war ja quasi nur der Abstauber. Aber auch die "Verwandlung" zählt, nicht (nur) die Torchance....

Gruß und schönen Tag,

StTüff
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#26

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 14:35
der Ausschlag gebende Punkt bei der Lösung ist, das die Rückänderung nicht im OnChange erfolgt sondern danach. Und das kann man über einen Timer oder über PostMessage erreichen sofern keine weiteren Messages der Messagequeue im OnChange abgearbeitet werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#27

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 14:43
Die Überlegung mit dem Timer hatte ich ja weiter oben auch schon mal angestellt. Dabei war ich mir aber nicht sicher, ob es eine Überschneidung geben kann, wenn der Timer abläuft, solange das Event (aus welchem Grund auch immer) noch nicht abgelaufen ist.
Ich glaube aber zu wissen, dass das Timerevent (bzw. die zugehörige Nachricht) in der Messageque dann hinten ansteht. Sicher war und bin ich mir da aber nicht, dehalb habe ich es gelassen.

Die Lösung, wie sie jetzt ist finde ich sehr gut und bin froh, dass es ein solches Forum mit kompetenten Teilnehmern gibt.


Gruß,

StTüff
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#28

Re: Combobox ItemIndex=-1; Text ändern im Event

  Alt 23. Jul 2007, 14:45
Die Timermessage würde dann hinten in der Messagequeue angestellt werden. Allerding hättest du bei hängen des Programmes den Nachteil das mehrere Timermessages anstehen und somit nach dem abschalten des Timers im OnTimer trotzdem noch weitere male das OnTimer-Event ausgeführt werden könnte.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz