AGB  ·  Datenschutz  ·  Impressum  







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

Zugriff von Frame zu Frame

Ein Thema von Ykcim · begonnen am 21. Mai 2014 · letzter Beitrag vom 21. Mai 2014
Antwort Antwort
Ykcim

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

Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 14:49
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:
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.
Frame2:
Hier ist die Procedure Get_Auftrag

Delphi-Quellcode:
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;
Wenn ich den gleichen Aufruf Frame_Details1.Get_Auftrag(); auf in dem Form, in dem beide Frames eingefügt sind mache, klappt es sofort...
Kann mir jemand helfen?

Vielen Dank
Patrick
Patrick

Geändert von Ykcim (21. Mai 2014 um 15:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:01
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)
$2B or not $2B
  Mit Zitat antworten Zitat
Ykcim

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

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:07
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
Patrick
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
113 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:17
Wo ist denn dein Frame_Details1 deklariert?
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:22
Schiebe die Prozedur in eine neue Unit, die von beiden Frames geused wird.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Ykcim

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

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:23
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
Patrick
  Mit Zitat antworten Zitat
Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
113 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:29
Was meinst Du mit deklariert?
"Frame_Details1" dürfte doch eine Variable sein. Und die muss irgendwo deklariert sein, oder?
  Mit Zitat antworten Zitat
Ykcim

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

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:47
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
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Zugriff von Frame zu Frame

  Alt 21. Mai 2014, 15:50
var Frame_Details1: Frame_DetailsUnit.TFrame_Details;
Das was du "Variable erstellen" nennst, nennt sich "Variablen - Deklaration", bzw. "eine Variable deklarieren".
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  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 18:57 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