Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Alle Namen der Controls in einem Fenster auflisten (https://www.delphipraxis.net/71991-alle-namen-der-controls-einem-fenster-auflisten.html)

sminds 23. Jun 2006 12:04


Alle Namen der Controls in einem Fenster auflisten
 
Hallo,
ich möchte ein Berechtigungssystem schreiben, daß mir alle Controls eines Fensters ermittelt, die ich dann
in eine Datenbank schreibe und dann für jeden einzelnen Benutzer sagen kann, welches Control er sehen, ändern usw. darf.

Habe im Forum gelesen, daß es anscheinend mit EnumChildWindows möglich ist. Werde da aber nicht ganz schlau und wäre für eine zus. Info sehr dankbar.

Vielen Dank,
sminds.

marabu 23. Jun 2006 14:00

Re: Alle Namen der Controls in einem Fenster auflisten
 
Hallo.

Geht es dir um Fenster von frenden Anwendungen? Arbeitest du ohne VCL-Komponenten? Bei VCL-Komponenten findest du alle Controls in der entsprechenden property deiner Form, wobei du rekursiv suchen musst.

Grüße vom marabu

sminds 23. Jun 2006 14:07

Re: Alle Namen der Controls in einem Fenster auflisten
 
Ich meine die eigene Anwendung und ich arbeite mit VCL-Komponenten.
Kannst Du mir ein paar Zeilen Code posten, wie diese Eigenschaft heißt.

Vielen Dank für die Infos.

MfG,
~sminds

SirThornberry 23. Jun 2006 14:09

Re: Alle Namen der Controls in einem Fenster auflisten
 
Wenn es um die eigene Anwendung geht ist es einfacher. Mit "DeinFrom.Controls[i]" und "DeinForm.ControlCount" kannst du alle Controls durchlaufen. Ist eines der Controls vom Typ TWinControl gehst du davon auch wieder rekursiv alles durch.

marabu 23. Jun 2006 14:12

Re: Alle Namen der Controls in einem Fenster auflisten
 
Zu einem anderen Zweck in einem anderen Programm geschrieben, aber es könnte auch dir helfen:

Delphi-Quellcode:
procedure FindControls(wc: TWinControl; s: TStrings; c: TClass; recurse: Boolean = False);
var
  i: Integer;
  cc: TWinControl;
begin
  for i := 0 to Pred(wc.ControlCount) do
  begin
    cc := wc.Controls[i] as TWinControl;
    if cc is c then
      s.AddObject(cc.Name, cc);
    if recurse and (cc.ControlCount > 0) then
      FindControls(cc, s, c, recurse);
  end;
end;
Mit dieser Routine suche ich alle Controls einer bestimmten Klasse (wahlweise rekursiv) und speichere ihren Namen und einen Zeiger in einer StringListe:

Delphi-Quellcode:
procedure TDemoForm.DemoButtonClick(Sender: TObject);
begin
  with ListBox do
  begin
    Items.Clear;
    FindControls(self, Items, TEdit, true);
  end;
end;
marabu

sminds 23. Jun 2006 14:12

Re: Alle Namen der Controls in einem Fenster auflisten
 
Super,
Danke für die Starthilfe.

mfg,
~sminds.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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