![]() |
DBRadiogroup enabled aber readonly bei D7
Guten Morgen,
habe ein kleines Problem mit einer DBRadiogroup. Ich würde sie gerne als readonly darstellen wollen. D.h. sie soll vom Style her enabled aussehen (also nicht grau hinterlegt), aber auf keine MouseEvents reagieren und eigentlich auch nicht den Focus (Umrandung des angeklickten Items) bekommen. Stattdessen sollten, wenn möglich, die Events Click und insbseondere DoubleClick an parent weitergeleitet werden. Dachte es würde eigentlich genügen den Controlstyle abzuändern und auf die Mouse-Events zu reagieren. Hat jedoch leider nicht funktioniert. Die einzelnen Radiobutton sind weiterhin aktiv. Hat jemand ne Idee, wie man das lösen kann??? |
Re: DBRadiogroup enabled aber readonly bei D7
Hi,
die Tastaturschnittstelle hast du ja mit TabStop im Griff. Für die Mausschnittstelle musst die RadioButtons in der Group zähmen. Gib der Group etwas Code für das Event OnEnter():
Delphi-Quellcode:
Im Event OnCreate() der Form ist das folgende hilfreich:
procedure TDataForm.DBRadioGroupEnter(Sender: TObject);
begin if Sender is TRadioButton then with Sender as TRadioButton do Parent.SetFocus; end;
Delphi-Quellcode:
Mich stört das FocusRect ja nicht so, aber mehr Aufwand würde ich jetzt auch nicht mehr treiben.
procedure TDataForm.FormCreate(Sender: TObject);
var i: Integer; begin with DBRadioGroup do for i := 0 to Pred(Items.Count) do begin Buttons[i].OnEnter := DBRadioGroupEnter; Buttons[i].TabStop := False; end; end; Grüße vom marabu |
Re: DBRadiogroup enabled aber readonly bei D7
Hallo,
Danke für die Antwort, Marabu, so funktioniert es natürlich, hat aber den Nachteil, daß ich kein Doppelklickevent mehr bekomme, da das Control bei einem Dbl.Click keinen Focus mehr hat. Hatte schon in dem CMEnter ein defocusControl, hatte aber dasselbse zur Folge, bei einem Doppelklick wird CMEnter ausgelöst und der Focus auf Parent gesetzt, was dann heisst, wenn zweimal geklickt wird, wird halt zweimal der Focus auf parent gestzt und kein Dbl.Click ausgelöst. Werde also erstmal mit dem std Property ReadOnly arbeiten und bei Gelegenheit mal schauen, was man da sinniger Weise machen kann. Da das Formular quasi als statisches Form (ohne Funktion) angezeigt werden soll und erst nach einem DoppelKlick editierbar sein soll, wäre es halt schön, wenn das Control nicht auf Focus-Events reagieren würde. Nun denn, Grüße TAC |
Re: DBRadiogroup enabled aber readonly bei D7
Zwei Gründe sprechen eigentlich gegen deinen Ansatz: Auf der einen Seite irritierst du den Benutzer deines Programms, weil die visual clues von Windows plötzlich fehlen und auf der anderen Seite ist der Doppelklick nicht gerade die tollste Erfindung seit geschnittenem Brot. Mir würde besser gefallen, wenn du eine Notebook-Komponente nimmst und auf einer Seite die Informationen per StaticText o.ä. anzeigst. Durch eine geeignete Aktion des Benutzers (Klick, Doppelklick) kannst du dann auf die Seite mit den Eingabe-Controls umschalten. Es gibt noch andere Ansätze, aber das hängt auch von einigen Details der Daten ab.
Grüße, marabu |
Re: DBRadiogroup enabled aber readonly bei D7
Hallo, Marabu,
da der Doppelklick die Möglichkeit zum Editieren schaffen soll, ist es am einfachsten sämtliche Controls einfach auf ein Panel zu setzen( :wall: ) und dieses zu disablen, dadurch wird dann auch der Doppelklick weitergeleitet. Das Editieren kleinerer Datenblöcke (auf Panels) geschieht dann modal über einen Dialog (kein Pagecontrol), der sich über den Doppelklick öffnet. Danke trotzdem für Deine Vorschläge. Mfg TAC |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz