Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Kann man die plazierten Komponenten in einer Liste darstellen? (https://www.delphipraxis.net/186521-kann-man-die-plazierten-komponenten-einer-liste-darstellen.html)

LingNeu 9. Sep 2015 08:04

Kann man die plazierten Komponenten in einer Liste darstellen?
 
Hallo Delphifans,
gibt es ein Tool oder eine Möglichkeit die verwendeten Komponenten auf einer angezeigten Form mit ihren Namen/Komponentennamen in einer Tabelle darzustellen
Das wäre insofern eine feine Sache, da man dann eine Übersicht der verwendeten Namen hätte. Auch für eine Dokumentation wäre das nicht schlecht und man könnte sich selbst besser kontrollieren.
Natürlich kann man sich sowas per Hand aus dem Quelltext zusammensuchen, aber man ist ja um jede Erleichterung froh.

Die Struktur wie u.a. wäre schon hilfreich ...

 
Objektname_____Komponente
e_AB___________Tedit
e_AC___________Tedit
p_AP___________TPanel
b_Off___________TButton

Für jede Anregung bin ich dankbar!
Gruß Lingneu

mkinzler 9. Sep 2015 08:26

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
Ja, alle Komponenten kann man mit Komp.Components[] rekursiv auslesen.

nahpets 9. Sep 2015 08:30

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
Suchst Du sowas?
Delphi-Quellcode:
unit KomponentenListeUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, ComCtrls, Grids, DBGrids, DB, ADODB,
  ActnList, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    ActionList: TActionList;
    acListe: TAction;
    acEnde: TAction;
    con: TADOConnection;
    qry: TADOQuery;
    dbg: TDBGrid;
    stb: TStatusBar;
    dbn: TDBNavigator;
    meListe: TMemo;
    procedure acListeExecute(Sender: TObject);
    procedure acEndeExecute(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.acListeExecute(Sender: TObject);
var
          i : Integer;
begin
  meListe.Lines.Clear;
  for i := 0 to Self.ComponentCount - 1 do Begin
    meListe.Lines.Add(Format('%s -> %s',[Self.Components[i].Name,Self.Components[i].ClassName]));
  end;
end;

procedure TForm1.acEndeExecute(Sender: TObject);
begin
  Close;
end;

end.
Edit1 -> TEdit
Button1 -> TButton
Button2 -> TButton
dbg -> TDBGrid
stb -> TStatusBar
dbn -> TDBNavigator
meListe -> TMemo
ActionList -> TActionList
acListe -> TAction
acEnde -> TAction
con -> TADOConnection
qry -> TADOQuery

Sir Rufo 9. Sep 2015 08:38

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
Eine sprechendere Namensgebung wäre auf jeden Fall angebracht (hatten wir schon mindestens einmal als Thema).

Ich bin ein Verfechter von
Delphi-Quellcode:
CustomerNameEdit: TEdit;
CustomerActiveCheckBox: TCheckBox;
CustomerAddressCityEdit: TEdit;
aus dem ganz einfachen Grund, dass bei zu vielen Controls auf einer Form es Sinn macht, diese in einem Frame unterzubringen und dann ist der Zugriff im Prinzip gleich:
Delphi-Quellcode:
// ohne Frames
CustomerAddressCityEdit.Text := '...';
// mit Frames
Customer // CustomerFrame
  .Address // AddressFrame
    .CityEdit.Text := '...';
Ein weiterer Vorteil ist bei der Codevervollständigung. Tippe ich
Delphi-Quellcode:
Customer
bekomme ich automatisch alles vorgeschlagen, was mit Customer beginnt. Sehr praktisch.

Eine alphabetische Sortierung nach den Namen ergibt dann auch einen sehr guten Überblick.

Nur diese Tabelle bringt nicht viel, wenn die Namen nicht aussagekräftig sind.

nahpets 9. Sep 2015 08:44

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
@Sir Rufo:

Du hättest dann vermutlich lieber sowas, wie in der Anlage?

(gerade erstellt aus der laufenden Entwicklungsumgebung von Delphi 7)

Sir Rufo 9. Sep 2015 08:53

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
@nahpets

Ohne mir den Anhang angesehen zu haben, ich habe am liebsten immer das, wo ich mir die wenigsten Gedanken machen muss, dann bleibt immer Platz und Zeit für neue Gedanken ;)

Bei
Delphi-Quellcode:
CustomerAddressCityEdit
brauche ich mir nur noch zu überlegen, wie ich die Daten dort rein und raus bekomme.
Delphi-Quellcode:
Edit1
oder
Delphi-Quellcode:
e_CAC
sind da die totalen Denkbremsen.

LingNeu 9. Sep 2015 08:57

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
hallo zusammen,
herzlichen DAnk für die vielen, konstruktiven Antworten!
@mkinzler - merci für den hinweis!
@nahpets - dein Code reicht mir momentan voll aus
das mit der HTML Seite finde ich auch genial - wie macht man sowas?
@sir rufo - guter Tipp mit der Namensvergabe!
grüße vom LingNeu

nahpets 9. Sep 2015 09:05

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1315238)
@nahpets

Ohne mir den Anhang angesehen zu haben, ich habe am liebsten immer das, wo ich mir die wenigsten Gedanken machen muss, dann bleibt immer Platz und Zeit für neue Gedanken ;)

Bei
Delphi-Quellcode:
CustomerAddressCityEdit
brauche ich mir nur noch zu überlegen, wie ich die Daten dort rein und raus bekomme.
Delphi-Quellcode:
Edit1
oder
Delphi-Quellcode:
e_CAC
sind da die totalen Denkbremsen.

Sorry, aber Edit1 war in das Beispielprogrämmelchen, das ich da gerade zusammengedaddelt habe, nur einfach draufgepappt. Natürlich bekommen Komponenten bei mir sinnvolle Namen, so dass ich weiß, welchen Type sie haben und vor allem, wofür sie genutzt werden. Auch wenn es jetzt Widersprüche geben wird: Der Ansatz der ungarischen Notation ist da zuweilen schon hilfreich.

Und letztlich nutzt Du ja (ausgehend von Deiner Beschreibung) eine "prosaische" Weiterentwicklung dieses Grundgedanken.

nahpets 9. Sep 2015 09:26

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
Zitat:

Zitat von LingNeu (Beitrag 1315239)
das mit der HTML Seite finde ich auch genial - wie macht man sowas?

Die HTML-Seite stammt aus einer Komponente, die ich im Laufe der Jahre mal entwickelt habe, um aus meinen Programmen zur Laufzeit ein Grundgerüst für die kontextsensitive Hilfe zu erstellen.

Wesentliche Hilfe liefert dabei die TypInfo von Delphi. Zu den dort enthaltenen Routinen baut man sich ein paar Funktionen und Prozeduren, die die Informationen mit HTML-Tags versehen, sammle das alles in einer Stringliste und speichere es ab. Ok - hat mich schon ein paar Jährchen an immerwiederweiterentwickeln gekostet, aber alles wesentliche ist mit Hausmitteln von Delphi zu erledigen.

LingNeu 9. Sep 2015 09:51

AW: Kann man die plazierten Komponenten in einer Liste darstellen?
 
@nahpets,
danke für die Info!
RESPEKT!8-)
Viele Grüße LingNeu


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