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 komponenten (https://www.delphipraxis.net/4423-komponenten.html)

LoL 28. Apr 2003 17:53


komponenten
 
wie prüft man ob eine komponente erzeugt wurde?

schon mal danke im vorraus

nailor 28. Apr 2003 17:57

Bisschen mehr Info wäre nicht schlecht...

Willst du wissen, ob eine Komponente, die du zu Laufzeit erzeugen willst, schon da ist, oder was???

LoL 28. Apr 2003 17:58

genau ich will überprüfen ob eine komponente zur laufzeit erzeugt worden ist bzw. existiert und wenn ja gegebenenfalls löschen!

Alexander 28. Apr 2003 19:34

müsste doch mit FindComponent klappen, oder irre ich mich?

LoL 29. Apr 2003 14:37

Delphi-Quellcode:
Die Methode FindComponent gibt an, ob der Komponente eine bestimmte Komponente untergeordnet ist.

function FindComponent(const AName: string): TComponent;
das steht dazu in der hilfe un das ist leider nicht das was ich suche. ich dachte zunächst an sowas wie "if component created" oder so vielleicht kennst du da was?

CalganX 29. Apr 2003 14:52

Du machst folgendes:
Delphi-Quellcode:
if FindComponent('Kompo1') = nil then
  // nicht erzeugt
else
  // erzeugt
Chris

LoL 29. Apr 2003 14:56

ich habs probiert bekomme aber diese fehler meldung

Delphi-Quellcode:
Undeclared identifier: 'FindComponent'
keine ahnung warum :wall: bitte helft mir!

Stanlay Hanks 29. Apr 2003 15:59

Also bei mir funzt das, wie erwartet, wunderbar. 8) Poste mal deinen Quelltext bitte.
Man liest sich
Stanlay.

LoL 29. Apr 2003 16:03

und welchen teil?

Delphi-Quellcode:
procedure draw_marker(x_pos,y_pos : integer; nummer : string; farbe : tcolor);
var sh_kreis : tshape;
    sh_line : tshape;
    lbl_nr  : tlabel;
begin
  sh_line             := TShape.Create(frm_eingabe);
  sh_line.Parent      := frm_eingabe.c_graph;
  sh_line.Height      := 30;
  sh_line.Width       := 1;
  sh_line.Left        := x_pos;
  sh_line.Top         := y_pos - sh_line.Height;
  sh_line.Brush.Color := clblack;

  sh_kreis            := TShape.Create(frm_eingabe);
  sh_kreis.Parent     := frm_eingabe.c_graph;
  sh_kreis.Height     := 17;
  sh_kreis.Width      := 17;
  sh_kreis.Shape      := stcircle;
  sh_kreis.Left       := sh_line.Left-round((sh_kreis.Width-1)/2);
  sh_kreis.Top        := sh_line.Top - sh_line.Height + sh_kreis.Height;
  sh_kreis.Pen.Style  := psclear;
  sh_kreis.Brush.Color := farbe;

  lbl_nr              := tlabel.Create(frm_eingabe);
  lbl_nr.Parent       := frm_eingabe.c_graph;
  lbl_nr.Caption      := nummer;
  lbl_nr.Width        := sh_kreis.Width;
  lbl_nr.Height       := sh_kreis.Height;
  lbl_nr.Top          := sh_kreis.Top+1;
  lbl_nr.Left         := sh_kreis.Left+4;
  lbl_nr.Transparent  := true;

end;
in dem teil erstelle ich halt meine komponenten. ich will überprüfen ob diese komponenten erzeugt worden sind oder nich!

mfg christoph

Haegar 29. Apr 2003 16:11

aha, und wo hast du den teil reingebastelt, wo die abfrage mit FindComponent steht?
poste den auch mal

gruss haegar

LoL 29. Apr 2003 16:13

eben noch gar net weil es eben nicht funzt*g*

Code:
Undeclared identifier: 'FindComponent'
gruß christoph

BrainCode 29. Apr 2003 16:21

Stop! Du musst "FindComponent" doch irgendwo eingebaut haben, wenn du die Fehlermeldung
Code:
Undeclared identifier: 'FindComponent'
bekommst...

LoL 29. Apr 2003 16:22

ich hab davon ja keine ahnung. es wäre nett wenn du mir dazu mal ein beispiel posten könntest!

(ich dachte halt so:
Code:
TShape(FindComponent(sh_line));
)

Christoph

Stanlay Hanks 29. Apr 2003 16:29

Nö. Das müsste du so machen (Ich schätze du willst überprüfen ob es eine Komponente auf dem Form gibt, die ein Shape ist, oder):

Delphi-Quellcode:
var
i: Integer;
begin
for i := 0 to ComponentCount -1 do
  if Components[i] is TShape then
     (Components[i] as TShape).Text := '';
end;
Das ist ein Code von Mr. Spock vom 23.4.03 (Suche!! :wink: )
Dabei werden alle komponenten auf dem Form durchlaufen, es wird überprüft ob es ein Shape ist, und wenn, weird es gelöscht.

Man liest sich, Stanlay 8)

LoL 29. Apr 2003 16:31

ich bekomme diese fehlermeldungen

Code:
[Error] U_funktionen.pas(441): Undeclared identifier: 'ComponentCount'
[Error] U_funktionen.pas(442): Undeclared identifier: 'Components'
[Error] U_funktionen.pas(442): Operator not applicable to this operand type
[Error] U_funktionen.pas(443): Operator not applicable to this operand type
[Error] U_funktionen.pas(443): Statement expected, but expression of type 'String' found
hat das vielleicht was mit meiner delphi version zu tun?

MFG Christoph

Stanlay Hanks 29. Apr 2003 16:37

Du meinst eine Komponente die a) ein Shape ist und b) den Namen z.B. Shape1 hat?

begin
IF FindComponent('Shape1') is TShape
THEN FreeandNil(Shape1);
end;

Allerding muss die Komponente dann bereits zur Designzeit vorhanden sein.

Du musst vorher die Unit ExtCtrls einbinden, weil er sonst TShape irgendwie nicht erkennt.

Meinst du sowas?

Poste mal den Code.

Haegar 29. Apr 2003 16:39

hast du die entsprechenden units eingebunden?

gruss haegar

LoL 29. Apr 2003 16:45

Das sind die Unit die ich eingebunden habe:
Code:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ToolWin, ExtCtrls, TeeProcs,
  TeEngine, Chart, Menus, Series, inifiles;
Ich will eine Komponente die zur Laufzeit erstellt worden ist löschen!


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