AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Schleife durch alle Controls eines Parents liefert falsche Control-Inhalte
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife durch alle Controls eines Parents liefert falsche Control-Inhalte

Ein Thema von cltom · begonnen am 24. Jul 2013 · letzter Beitrag vom 21. Aug 2013
 
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#1

Schleife durch alle Controls eines Parents liefert falsche Control-Inhalte

  Alt 24. Jul 2013, 15:24
Delphi-Version: XE2
Hallo,

mühsamer Titel, komischer Effekt. Ich habe eine Klasse mit einer Prozedur, die mir alle Controls eines Parents durchgeht und abhängig vom Control-Typ den Inhalt ausliest. Ähnliche Prozeduren sind hier schon mehrfach aufgetaucht. Sinngemäß sieht das so aus:

Delphi-Quellcode:
{*******************************************************************}
procedure TUserInterfaceOps.ControlToStringList(parentcontrol : TWinControl;
  var astringlist: TStringList; includename, includevalue : boolean);
{*******************************************************************}
var
  i : integer;
  str_temp : string;
begin

  for i := 0 to parentcontrol.ControlCount-1 do
    begin
      try

        str_temp := '';

        if parentcontrol.Controls[i] is TAdvPanel then
          ControlToStringList(TWinControl(parentcontrol.Controls[i]),astringlist,includename,includevalue);

        if parentcontrol.Controls[i] is TAdvEdit then
          begin
            if includename then str_temp := parentcontrol.Controls[i].Name;
            if includename and includevalue then str_temp := str_temp + ' = ';
            if includevalue then str_temp := str_temp + (parentcontrol.Controls[i] as TAdvEdit).Text;
            astringlist.Add(str_temp);
          end;

        if parentcontrol.Controls[i] is TCheckBox then
          begin
            if includename then str_temp := parentcontrol.Controls[i].Name;
            if includename and includevalue then str_temp := str_temp + ' = ';
            if includevalue then str_temp := str_temp + BoolToStr((parentcontrol.Controls[i] as TCheckBox).checked);
            astringlist.Add(str_temp);
          end;

      except
        astringlist.Add('Error reading ' + parentcontrol.Controls[i].Name);

      end;

    end;

end;
Der Prozedur übergebe ich das ganze Formular und krieg dann eine Stringlist nach dem Schema:

Edit1 = Edit1Text
Edit2 = Edit2Text

usw.

Das funktionierte bis dato problemlos, solange das Projekt eigenständig war. Wenn aber ich das aufrufende Objekt/Formular aber in ein anderes Projekt integriere, dann liefert mir die Prozedur eine Liste von Werten, die nicht in den Edits drin stehen, sondern die beim Create des Forms erzeugt wurden.

Wenn ich zB folgendes probiere:

Delphi-Quellcode:
        if parentcontrol.Controls[i] is TAdvEdit then
          begin
            if includename then str_temp := parentcontrol.Controls[i].Name;
            if includename and includevalue then str_temp := str_temp + ' = ';
            (parentcontrol.Controls[i] as TAdvEdit).Text := 'irgendwas'; //<-----
            if includevalue then str_temp := str_temp + (parentcontrol.Controls[i] as TAdvEdit).Text;
            astringlist.Add(str_temp);
          end;
dann wird zwar der wert "irgendwas" in die Stringliste geschrieben, nicht aber zurück aufs Form. Ich kann auch direkt vor dem Aufruf von ControlsToStringList noch etwas in die edits reinschreiben (im delphicode), in der StringList taucht dann dennoch der Wert auf, den ich beim Create des Forms zugewiesen habe.

danke für hinweise
tom

Geändert von cltom (24. Jul 2013 um 15:26 Uhr)
  Mit Zitat antworten Zitat
 


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 18:56 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