AGB  ·  Datenschutz  ·  Impressum  







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

Abfragen von Komponenten Eigenschaften

Ein Thema von Hotti · begonnen am 22. Jun 2003 · letzter Beitrag vom 23. Jun 2003
Antwort Antwort
Hotti

Registriert seit: 22. Jun 2003
9 Beiträge
 
#1

Abfragen von Komponenten Eigenschaften

  Alt 22. Jun 2003, 17:44
Hallo !

Ich möchte mit einer Komponente die auf einem Form liegt auf die Eigenschaften der anderen Komponenen zugreifen um deren Inhalt z.B in der Registry zu Speichern.

Mit dieser Procedur kann ich zwar alle Komponenten auslesen, allso Ihren
Type und Namen ermitteln aber nicht auf Ihre Eigenschaften wie Text,Checked etc. zugreifen!!

Wo liegt der Fehler oder bin ich mit meinem Lösungsansatz auf dem Holzweg !
Delphi-Quellcode:
procedure TEasy.Write;
 var
  I: Integer;
  Formy:TForm;
  Checking:Boolean;
  Edit:TEdit;
 begin
  T:='';
  Formy:=TForm(self.owner);
  for I:= 0 to Formy.ComponentCount -1 do
  begin
   If Formy.Components[i].ClassName = 'TEditthen
     begin
      if Formy.FindComponent(Formy.Components[i].Name)<>nil then
       begin
        Edit:=TEDit(Formy.Components[i].Controls[i]);
        WriteString(Formy.Components[i].Name,Edit.text);
       end;
      end;
    If Formy.Components[i].ClassName = 'TCheckBoxthen
     begin
        Checking:=TCheckBox(Formy.Components[i]).Checked;
        WriteBoolean(Formy.Components[i].Name,Checking);
       end;
      end;
    end;
  end;
MFG Hotti
  Mit Zitat antworten Zitat
praktiker

Registriert seit: 9. Jun 2003
Ort: Hesedorf
11 Beiträge
 
#2
  Alt 22. Jun 2003, 21:23
Hi, bin durch einen Bruch des Schlüsselbeins lädiert, deswegen nur
kurz einen Ansatz

Beispiel: Formular mit drei labeln, namen label1,label2,label3
Delphi-Quellcode:
procedure teasy.test;
VAR fcomp:tcomponent;
begin
  fcomp:=findcomponent([color=#ff0000]'label2'[/color]);
  if (fcomp <> nil) then
  begin
   (fcomp as Tlabel).color:=clred; // Farbe invers auf rot
   (fcomp as Tlabel).text:=[color=#ff0000]'Neuer text'[/color]; // und anderer text
  end;
end;
Wenn du das mal austestest, und verstanden hast, ist es ein leichtes für dich, deinen Quelltext funktionell zu ändern.
hoffe geholfen zu haben

[edit=Daniel B]Delphi-Tags eingefügt und Code ausgerichtet. MfG Daniel B.[/edit]
  Mit Zitat antworten Zitat
Hotti

Registriert seit: 22. Jun 2003
9 Beiträge
 
#3
  Alt 23. Jun 2003, 21:40
Hi

Danke für die schnelle Antwort.
Dieser Tip mit der Typenunwandlung war mir zwar schon bekannt, aber die Sache funktioniert immer noch nicht. Ich vermute es hängt an der Zeile "Formy:=TForm(self.owner)". Da Formy anschließend den Wert eines leeren Forms ohne die auf ihn befindlichen Komponenten erhält.

Das einfach zuteilen von Formy:=Form1 hängt auch da die Komponente das Form ja noch nicht kennt auf welches jemals arbeiten soll.

Wer kennt die Lösung

MFG Hotti
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 23. Jun 2003, 22:08
Moin Hotti,

sagen wir mal so:
Wenn ich die Fragen verstehen würde, könnte ich vielleicht die Antwort geben
Ich versuch's mal soweit ich's verstanden hab'.

Zitat von Hotti:
Da Formy anschließend den Wert eines leeren Forms ohne die auf ihn befindlichen Komponenten erhält.
Da Formy eine lokale Variable ist, ist ihr Wert zu Beginn der Prozudur unbestimmt, und nach verlassen der Prozedur existiert sie genaugenommen gar nicht mehr.

Zitat von Hotti:
Das einfach zuteilen von Formy:=Form1 hängt auch da die Komponente das Form ja noch nicht kennt auf welches jemals arbeiten soll.
Daraus denke ich mir, dass TEasy eine Kompo ist die mit einem zu diesem Zeitpunkt noch unbekannten Formular etwas machen soll.
Was spricht denn dagegen, dieses Formular als Parameter zu übergeben?
Dann steht man auch nicht vor dem Problem, dass der Owner eventuell gar kein Formular ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 22:03 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