![]() |
Zugriff von Frame zu Frame
Hallo Zusammen,
iuch hätte da mal gerne ein Problem - sorry, ich habs schon: Ich habe ein Formular, auf dem mehrere Frames liegen. In einem Frame habe ich eine "Public" Procedure geschrieben, auf die ich von einem anderen Frame zugreifen möchte. Ich habe das Frame mit der Procedure in den Uses des Frames mit dem gewünschten Procedureaufruf aufgenommen. Aber zu einem mir nicht erklärenbaren Grund kann ich auf das Frame mit der Procedure nicht zugreifen. Auch nicht testhalber auf dort platzierte Labels. In dem Frame wird das andere Frame einfach nicht gefunden. Ich kann zwar die FrameUnit, die ich eingebunden habe finden, aber mit dem Namen des Frames kann er nichts anfangen... Frame1: Dort soll die Procedure (Get_Auftrag) aufgerufen werden. Das Frame Frame_Details ist in den Uses.
Delphi-Quellcode:
Frame2:
unit Frame_UebersichtUnit;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, AdvObj, BaseGrid, AdvGrid, Vcl.ExtCtrls, AdvGlowButton, Frame_DetailsUnit, Vcl.StdCtrls, AdvEdit, DBAdvEd, TGridDesignUnit, TAuftragUnit; type TFrame_Uebersicht = class(TFrame) Grid_Uebersicht: TAdvStringGrid; private { Private-Deklarationen } public { Public-Deklarationen } end; implementation {$R *.dfm} procedure TFrame_Uebersicht.Grid_UebersichtSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin Frame_Details1.Get_Auftrag(Grid_Uebersicht.Cells[1,ARow],Grid_Uebersicht.Cells[3,ARow]);//Das FrameDetails wird nicht gefunden!!!! end; end. Hier ist die Procedure Get_Auftrag
Delphi-Quellcode:
Wenn ich den gleichen Aufruf
unit Frame_DetailsUnit;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, TAuftragUnit, TArtikelUnit, TArbeitsgangUnit; type TFrame_Details = class(TFrame) Panel_Artikel: TPanel; private { Private-Deklarationen } public { Public-Deklarationen } procedure Fill_Details; procedure Get_Auftrag(Auftrag_Nr: string; AG_Nr: string); end; implementation {$R *.dfm} procedure TFrame_Details.Get_Auftrag(Auftrag_Nr: string; AG_Nr: string); begin Auftrag.Auftrag_Nr:=Auftrag_Nr; Try Auftrag.AG_Nr:=StrToInt(AG_Nr); Except Auftrag.AG_Nr:=0; End; end;
Delphi-Quellcode:
auf in dem Form, in dem beide Frames eingefügt sind mache, klappt es sofort...
Frame_Details1.Get_Auftrag();
Kann mir jemand helfen? Vielen Dank Patrick |
AW: Zugriff von Frame zu Frame
Ist der eine Frame in dem anderem Frame drin?
Wenn ja, dann nachfolgends das "Form" gegen "Frame2" austauschen. "Frame1" ist doch der Name der "Variable" in der Form-klasse, wo die Frame1-Instanz, beim Erstellen ihren Zeiger hinterlegt. Also mußt du auch in der Form nachsehen und dort über die Variable (das Feld) auf den anderen Frame zugreifen. Oder, was besser ist: - die Methode wird als Published im Frame1 veröffentlicht - in Frame2 gibt es dafür ein Property, welches Zeiger auf diese Methoden annehmen kann - und dann verknubbelt man im OI die Methode mit dem Event (so, wie man es z.B. mit den OnClick-Events macht) |
AW: Zugriff von Frame zu Frame
Hallo himitsu,
nein, beide frames sind auf einer Form eingefügt, aber das eine ich nicht in dem anderen. Ich habe Ausschnitte aus den Frames in meine Frage eingefügt, dann siehst Du vielleicht schon sofort einen Fehler... Vielen Dank Patrick |
AW: Zugriff von Frame zu Frame
Wo ist denn dein Frame_Details1 deklariert?
|
AW: Zugriff von Frame zu Frame
Schiebe die Prozedur in eine neue Unit, die von beiden Frames geused wird.
|
AW: Zugriff von Frame zu Frame
Was meinst Du mit deklariert?
Frame_Details ist der Name des Frames, auf dem die Procedure (Get_Auftrag) liegt und welches in dem Procedureaufruf-Frame mit Frame_DetailsUnit (der Dateiname des Frames "Frame_Details") in den uses mit eingebunden ist. Ganz schön oft das Wort "FRame"... Patrick |
AW: Zugriff von Frame zu Frame
Zitat:
|
AW: Zugriff von Frame zu Frame
Mmmh...
Ich habe jetzt einfach in dem Procedureaufruf-Frame eine Variable Frame_Details1: Frame_DetailsUnit.TFrame_Details erstellt. Jetzt scheint es zu klappen... Aber wirklich verstanden, warum das so ist habe ich nicht...
Delphi-Quellcode:
unit Frame_UebersichtUnit;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, AdvObj, BaseGrid, AdvGrid, Vcl.ExtCtrls, AdvGlowButton, Frame_DetailsUnit, Vcl.StdCtrls, AdvEdit, DBAdvEd, TGridDesignUnit, TAuftragUnit; type TFrame_Uebersicht = class(TFrame) Grid_Uebersicht: TAdvStringGrid; private { Private-Deklarationen } public { Public-Deklarationen } end; var Frame_Details1: Frame_DetailsUnit.TFrame_Details; implementation Gruß Patrick |
AW: Zugriff von Frame zu Frame
Delphi-Quellcode:
var Frame_Details1: Frame_DetailsUnit.TFrame_Details;
Das was du "Variable erstellen" nennst, nennt sich "Variablen - Deklaration", bzw. "eine Variable deklarieren". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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