Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Editfelder auf ReadOnly setzen


LokutusvB - Fr 04.03.11 15:07
Titel: Editfelder auf ReadOnly setzen
Hallo,

ich nutze in einem Formular eine TScrollbox. In dieser befinden sich mehrere TPanels und auf den Panels wiederum mehrere TEdit-Felder. Das Scrollen der Box mittels Mausrad realisiere ich über die beiden Eigenschaften OunMouseWheelDown und ...Up

Delphi-Quelltext
1:
with (Sender as TScrollBox).VertScrollBar do Position := Position + 10;                    

Ja nach Aufruf des Formulares möchte ich die Edit-Felder ReadOnly setzen oder auch nicht. Da es sich um einige Panles und Felder handelt, wollte ich das einfach mittels Schleife organisieren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for ii := 0 to sbFormular.ControlCount -1 do begin
  if (sbFormular.Controls[ii].ClassType = TPanel)
    then sbFormular.Controls[ii].Enabled := False;
  if (sbFormular.Controls[ii].ClassType = TGroupBox)
    then sbFormular.Controls[ii].Enabled := False;
end;

Hier habe ich allerdings das Problem, daß sich die Scrollbox nicht mehr mit dem Mausrad scrollen lässt. Leider konnte ich keine Möglichkeit finden, die Edit-Felder auf ReadOnly zu setzen, das scheint über Controls nicht möglich zu sein. Kennt jemand eine Möglichkeit, mittels dieser Controls-Schleife die Edit-Felder auf ReadOnly zu setzen? So müßte ich nicht die Panles und Boxen deaktivieren und das Scrollen mittels Mausrad würde weiterhin funtkionieren.


zuma - Fr 04.03.11 15:13

ich mach das immer so, das ich die Components durchlaufe, die auf der Form sind und dann schalte:


Delphi-Quelltext
1:
2:
if xForm.Components[i] is TEdit then
  TEdit(xMaske.Components[i]).ReadOnly := xBool;


jaenicke - Fr 04.03.11 15:23

Ja, der Punkt ist einfach nur der Typecast auf TEdit. Ansonsten ist Controls hier natürlich richtig.


LokutusvB - Fr 04.03.11 15:26

Danke euch beiden, funktioniert bestens! :)

Bin mal wieder nicht auf einen Cast gekommen.