![]() |
komponenten
wie prüft man ob eine komponente erzeugt wurde?
schon mal danke im vorraus |
Bisschen mehr Info wäre nicht schlecht...
Willst du wissen, ob eine Komponente, die du zu Laufzeit erzeugen willst, schon da ist, oder was??? |
genau ich will überprüfen ob eine komponente zur laufzeit erzeugt worden ist bzw. existiert und wenn ja gegebenenfalls löschen!
|
müsste doch mit FindComponent klappen, oder irre ich mich?
|
Delphi-Quellcode:
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?
Die Methode FindComponent gibt an, ob der Komponente eine bestimmte Komponente untergeordnet ist.
function FindComponent(const AName: string): TComponent; |
Du machst folgendes:
Delphi-Quellcode:
Chris
if FindComponent('Kompo1') = nil then
// nicht erzeugt else // erzeugt |
ich habs probiert bekomme aber diese fehler meldung
Delphi-Quellcode:
keine ahnung warum :wall: bitte helft mir!
Undeclared identifier: 'FindComponent'
|
Also bei mir funzt das, wie erwartet, wunderbar. 8) Poste mal deinen Quelltext bitte.
Man liest sich Stanlay. |
und welchen teil?
Delphi-Quellcode:
in dem teil erstelle ich halt meine komponenten. ich will überprüfen ob diese komponenten erzeugt worden sind oder nich!
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; mfg christoph |
aha, und wo hast du den teil reingebastelt, wo die abfrage mit FindComponent steht?
poste den auch mal gruss haegar |
eben noch gar net weil es eben nicht funzt*g*
Code:
gruß christoph
Undeclared identifier: 'FindComponent'
|
Stop! Du musst "FindComponent" doch irgendwo eingebaut haben, wenn du die Fehlermeldung
Code:
bekommst...
Undeclared identifier: 'FindComponent'
|
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 |
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:
Das ist ein Code von Mr. Spock vom 23.4.03 (Suche!! :wink: )
var
i: Integer; begin for i := 0 to ComponentCount -1 do if Components[i] is TShape then (Components[i] as TShape).Text := ''; end; 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) |
ich bekomme diese fehlermeldungen
Code:
hat das vielleicht was mit meiner delphi version zu tun?
[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 MFG Christoph |
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. |
hast du die entsprechenden units eingebunden?
gruss haegar |
Das sind die Unit die ich eingebunden habe:
Code:
Ich will eine Komponente die zur Laufzeit erstellt worden ist löschen!
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ToolWin, ExtCtrls, TeeProcs, TeEngine, Chart, Menus, Series, inifiles; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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-2025 by Thomas Breitkreuz