![]() |
Re: Combobox ItemIndex=-1; Text ändern im Event
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 :wall: Gruß und viel Spaß beim tüfteln (das ist ja fast schon ein Wettbewerb :wink: ). 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. |
Re: Combobox ItemIndex=-1; Text ändern im Event
Liste der Anhänge anzeigen (Anzahl: 1)
:dancer: Jawohl... Die Lösung von SirThornberry funktioniert. Er hat damit den Wettbewerb gewonnen! :cheers:
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 |
Re: Combobox ItemIndex=-1; Text ändern im Event
Zitat:
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 |
Re: Combobox ItemIndex=-1; Text ändern im Event
und bei PostMessage muss man aufpassen das der Buffer keine lokale Variable ist und nur auf dem Stack liegt.
|
Re: Combobox ItemIndex=-1; Text ändern im Event
Genau :roll:
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 |
Re: Combobox ItemIndex=-1; Text ändern im Event
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.
|
Re: Combobox ItemIndex=-1; Text ändern im Event
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 |
Re: Combobox ItemIndex=-1; Text ändern im Event
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz