AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente existiert?

Ein Thema von ecHo89 · begonnen am 6. Nov 2008 · letzter Beitrag vom 6. Nov 2008
Antwort Antwort
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#1

Komponente existiert?

  Alt 6. Nov 2008, 17:34
Hallo,

ich habe versucht über FindComponent zu gucken, ob eine spezielle Komponente existiert. Und wenn sie nicht existiert, soll eine neue Komponente erstellt werden (funktioniert). Aber da liegt der Haken. Wenn FindComponent fehl schlägt kommt eine Zugriffsverletzung, wobei auch kein try/except hilft (in und außerhalb der IDE).

Gibts eine gute Alternative?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Komponente existiert?

  Alt 6. Nov 2008, 17:39
Du könntest doch mittels Assigned(Komponente) prüfen, ob sie erzeugt wurde. Und FindComponent sollte nil zurückgeben, wenn die Komponente nicht gefunden wird, anstatt Fehler zu verursachen. Aber ohne Code kann man da nichts Genaueres zu sagen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#3

Re: Komponente existiert?

  Alt 6. Nov 2008, 17:43
Okay, habe über die Methode .Name gesucht aber klar = nil funktioniert.
Was ist besser bzw. der Unterschied (bin noch lernfähig ^^).

Assigned(Component)
oder if FindComponent('Component) = nil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Komponente existiert?

  Alt 6. Nov 2008, 17:45
Wenn Du weißt, wie die Komponente heißt, ist Assigned() vorzuziehen. FindComponent() arbeitet intern mit einer Schleife, das verwendet man z.B., wenn man über alle Edits iterieren möchte.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#5

Re: Komponente existiert?

  Alt 6. Nov 2008, 17:56
Okay, ist vollstreck

Delphi-Quellcode:
procedure TFormMain.TBXItem34Click(Sender: TObject); // Andere Apps
begin
  if TBXItem34.Checked then
  begin
   TBXDockablePanel4.hide;
   TBXItem34.Checked := false;
  end
  else
  begin
   if Assigned(TBXDockablePanel4) = false then
  // if FindComponent('TBXDockablePanel4') = nil then
   begin
    createDockablePanel(4);
    TBXItem34.Checked := true;
   end
   else
   begin
    TBXDockablePanel4.Show;
    TBXItem34.Checked := true;
   end;
  end;
end;
Kann man eig. solche Prozeduren auch zusammenfassen und irgendwie die Zahl 4 mit einer anderen Ersetzen, obwohl es sich um Komponenten handelt?

Will jetzt mein neues Projekt vernünftig angehen und gerne neues lernen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Komponente existiert?

  Alt 6. Nov 2008, 18:00
Welche 4 meinst Du jetzt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#7

Re: Komponente existiert?

  Alt 6. Nov 2008, 18:02
Alle, habe

TBXDockablePanel4
TBXItem34.Checked
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Komponente existiert?

  Alt 6. Nov 2008, 18:11
Zitat von ecHo89:
Kann man eig. solche Prozeduren auch zusammenfassen und irgendwie die Zahl 4 mit einer anderen Ersetzen, obwohl es sich um Komponenten handelt?
Mit Delphi-Referenz durchsuchenFindComponent geht das. Da kannst du dann einen Integer-Wert übergeben. Du wirst sicher im Forum fündig.

Edit: Ich hatte "FineComponent" geschrieben. *g*
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#9

Re: Komponente existiert?

  Alt 6. Nov 2008, 21:02
klappt alles. closed
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#10

Re: Komponente existiert?

  Alt 6. Nov 2008, 21:04
Hallo,

Habe mehrere TBXMultiDocks mit AlignmentPanel und Komponenten drauf. Wenn ich ein MultiDock schließe (OnClose) und dann während der Laufzeit neu erstelle, wird es in die gleiche Zeile eingefügt.

Wie kann man das einstellen, dass jedes TBXMultiDock nur 1 Zeile benutzen und sich immer oben an dockt?

Gruß
Miniaturansicht angehängter Grafiken
tbx_151.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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