AGB  ·  Datenschutz  ·  Impressum  







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

DBRadiogroup enabled aber readonly bei D7

Ein Thema von TAC · begonnen am 26. Sep 2006 · letzter Beitrag vom 27. Sep 2006
Antwort Antwort
TAC

Registriert seit: 29. Nov 2005
Ort: Hamburg
25 Beiträge
 
#1

DBRadiogroup enabled aber readonly bei D7

  Alt 26. Sep 2006, 10:01
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???
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: DBRadiogroup enabled aber readonly bei D7

  Alt 26. Sep 2006, 13:15
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:
procedure TDataForm.DBRadioGroupEnter(Sender: TObject);
begin
  if Sender is TRadioButton then
    with Sender as TRadioButton do
      Parent.SetFocus;
end;
Im Event OnCreate() der Form ist das folgende hilfreich:

Delphi-Quellcode:
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;
Mich stört das FocusRect ja nicht so, aber mehr Aufwand würde ich jetzt auch nicht mehr treiben.

Grüße vom marabu
  Mit Zitat antworten Zitat
TAC

Registriert seit: 29. Nov 2005
Ort: Hamburg
25 Beiträge
 
#3

Re: DBRadiogroup enabled aber readonly bei D7

  Alt 26. Sep 2006, 14:49
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: DBRadiogroup enabled aber readonly bei D7

  Alt 26. Sep 2006, 19:44
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
  Mit Zitat antworten Zitat
TAC

Registriert seit: 29. Nov 2005
Ort: Hamburg
25 Beiträge
 
#5

Re: DBRadiogroup enabled aber readonly bei D7

  Alt 27. Sep 2006, 08:27
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( ) 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
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:23 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