AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zugriff auf dynamisch erstellte Objecte
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf dynamisch erstellte Objecte

Ein Thema von Ykcim · begonnen am 16. Jan 2019 · letzter Beitrag vom 16. Jan 2019
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zugriff auf dynamisch erstellte Objecte

  Alt 16. Jan 2019, 12:17
Hallo Zusammen,

ich bitte um Hilfe.

Ich erstelle zur Laufzeit ein TAdvDateTimePicker (TMS-Komponente)
Delphi-Quellcode:
procedure TFrame_Planung.TabGridCreate(Name: string);
var StartDate: TAdvDateTimePicker;
//Start_DateTimePicker
   StartDate:= TAdvDateTimePicker.Create(Self);
   StartDate.Parent:= Panel;
   StartDate.Name:='Date'+Name;
   StartDate.Visible:=true;
   StartDate.Left:=23;
   StartDate.Top:=20;
   StartDate.Height:=21;
   StartDate.Width:=200;
   //Start-Default-Wert
   StartDate.DateTime:= StrToDateTime(DateToStr(Now)+' '+MySQL.Find_Property('Default_Start_1_FA', 'Wert'));
Das klappt auch wunderbar und ich kann auch den DefaultWert zuweisen.

Jetzt möchte ich in einer anderen Prozedur den DateTime-Wert abgreifen, aber das bekomme ich nicht hin...

Delphi-Quellcode:
procedure TFrame_Planung.Datengrid_Counting(SG: TAdvStringGrid);
var I: integer;
      DateTimePicker: TAdvDateTimePicker;
      Anfang: TDateTime;
begin
   DateTimePicker:=PageControl_Maschinen.ActivePage.FindComponent('Date'+Copy(SG.Name,6,Length(SG.Name)-5)) as TAdvDateTimePicker;
   Anfang:=DateTimePicker.DateTime;
   for I := 2 to SG.RowCount -2 do begin
      ...
      //Kumuliertes Datum ermitteln
      if SG.Cells[13,I]<>'00:00then begin
         Anfang:=Anfang+StrToTime(SG.Cells[13,I]);
         SG.Cells[14,I]:=DateToStr(Anfang);
      end;
   end;
end;
Ich habe immmer einen Zugriffsfehler, als würde der TAdvDateTimePicker garnicht gefunden werden...

Wenn ich folgendes versuche:

Anfang:=PageControl_Maschinen.ActivePage.FindComponent('Date'+Copy(SG.Name,6,Length(SG.Name)-5)) as TAdvDateTimePicker.DateTime;
dann kann ich gar nicht compilieren, weil ich folgenden Hinweis bekomme:
[DCC Fehler] Frame_PlanungUnit.pas(823): E2233 Auf Eigenschaft 'DateTime' kann hier nicht zugegriffen werden

Sieht jemand meinen Fehler?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zugriff auf dynamisch erstellte Objecte

  Alt 16. Jan 2019, 12:24
Mit
StartDate:= TAdvDateTimePicker.Create(Self);
erzeugst du die Instanz mit Owner = Self . In diesem Fall ist das die Frame-Instanz von TFrame_Planung. Daher musst du die Komponente auch über das FindComponent der Frame-Instanz suchen:

DateTimePicker:=FindComponent('Date'+Copy(SG.Name,6,Length(SG.Name)-5)) as TAdvDateTimePicker;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Zugriff auf dynamisch erstellte Objecte

  Alt 16. Jan 2019, 12:40
PRIMA! Danke, das war der Grund!
Jetzt klappt es!
Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Zugriff auf dynamisch erstellte Objecte

  Alt 16. Jan 2019, 13:00
Hallo,
hm, wenn du eh innerhalb des Frames bist, warum merkst Du dir den DateTimePicker nicht in einer Frame-Variable,
oder wenn es mehrere sind, in einer TList /TObjectList oder ähnlichem?
Heiko
  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:04 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