Einzelnen Beitrag anzeigen

Ykcim

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

Frame kann Objekte des Formulars nicht ändern

  Alt 22. Mai 2014, 10:53
Hallo Zusammen,

so langsam werde ich wirklich wahnsinnig...

Ich habe auf meinem Hauptfomular ein Frame mit einer Tabelle. Wenn jetzt ein neuer Datensatz in der Tabelle angeklickt wird, wird ein Objekt mit Daten aus der Datenbank befüllt. Das klappt auch.

Jetzt möchte ich aber, dass diese Daten in Labels auf dem Hauptformular angezeigt werden. Das wird eine Procedure auf dem Hauptformular aufgerufen, welche die Daten aus dem Objekt holt und in die Labels schreibt. Die ist auch in Ordnung, denn wenn ich sie von einem Button auf dem Hauptformular aus ausführe ändert sie die Labels - wie gewünscht.

Da aber das auslösende Event das Selektieren eines neuen Datsatzes in der Tabelle auf dem Frame ist, möchte ich die Procedure von dort ausführen. Und das klappt nicht. Ich habe die Procedure publi gemacht, das Hauptformular in die uses aufgenommen. Die procedure wird auch gefunden und ausgeführt. Beim debuggen wird der Wert des Labels auch geändert, aber er wird nicht angezeigt. Auch Refresh & RePaint haben nichts gebracht.

Dann habe ich versicht irgendein Label einfach mal vom Frame aus zu überschreiben - geht auch nicht...

So langsam gehe ich unter die Decke. Bin ich so blöd oder mag mich mein Delphi nicht mehr???

Vielen Dank
Patrick


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, Vcl.StdCtrls, AdvEdit, DBAdvEd,
  TGridDesignUnit, TAuftragUnit, Frame_DetailsUnit;

type
  TFrame_Uebersicht = class(TFrame)
    Grid_Uebersicht: TAdvStringGrid;
    Panel_Titel: TPanel;
    Glow_Aktualisieren: TAdvGlowButton;
    Edit_Schnellsuche: TDBAdvEdit;
    procedure FrameResize(Sender: TObject);
    procedure Grid_UebersichtGetAlignment(Sender: TObject; ARow, ACol: Integer;
      var HAlign: TAlignment; var VAlign: TVAlignment);
    procedure Grid_UebersichtGetFloatFormat(Sender: TObject; ACol,
      ARow: Integer; var IsFloat: Boolean; var FloatFormat: string);
    procedure Grid_UebersichtGetCellColor(Sender: TObject; ARow, ACol: Integer;
      AState: TGridDrawState; ABrush: TBrush; AFont: TFont);
    procedure Grid_UebersichtClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation

{$R *.dfm}

uses MainUnit; //Das ist das Hauptfenster

procedure TFrame_Uebersicht.Grid_UebersichtClick(Sender: TObject);
begin
   Auftrag.Get_Auftrag(Grid_Uebersicht.Cells[1,Grid_Uebersicht.Row], Grid_Uebersicht.Cells[3,Grid_Uebersicht.Row]); //Das klappt
   Main.Details_exec; //Das Klappt nicht...
end;

Procedure Detailsexec
Delphi-Quellcode:
procedure TMain.Details_exec;
begin
   Clear_Details;
   Label_ArtikelNr.Caption:= Artikel.Artikel_Nr;
   Label_Bezeichnung1.Caption:= Artikel.Bezeichnung1;
   Try
      Label_Gewicht.Caption:= FloatToStr(Artikel.Gewicht);
   Except
      Label_Gewicht.Caption:='-';
   End;
   Try
      Label_Sicherheitsbestand.Caption:=IntToStr(Artikel.Sicherheitsbestand);
   Except
      Label_Sicherheitsbestand.Caption:='-';
   End;
   Label_AuftragNr.Caption:=Auftrag.Auftrag_Nr;
   Try
      Label_Menge.Caption:=IntToStr(Auftrag.Auftrag_Menge);
   Finally
      Label_Menge.Caption:='-';
   End;
   Try
      Label_AuftragStatus.Caption:=IntToStr(Auftrag.Auftrag_Status);
   Except
      Label_AuftragStatus.Caption:='-';
   End;
   if Auftrag.EilFa then
      Label_EilFA.Caption:='Ja'
   else
      Label_EilFA.Caption:='Nein';
   Try
      Label_KritAT.Caption:=FloatToStr(Auftrag.KritAT);
   Except
      Label_KritAT.Caption:='-';
   End;
   Label_Lagerzugang.Caption:=DateToStr(Auftrag.Lagerzugang);
   Try
      Label_AGStatus.Caption:=IntToStr(Arbeitsgang.AG_Status);
   Finally
      Label_AGStatus.Caption:='-';
   End;
   Label_RMDatum.Caption:=DateToStr(Arbeitsgang.RM_Datum);
   Try
      Label_RMMenge.Caption:=IntToStr(Arbeitsgang.RM_Menge);
   Except
      Label_RMMenge.Caption:='-';
   End;
   Try
      Label_AGNr.Caption:=IntToStr(Arbeitsgang.AG_Nr);
   Except
      Label_AGNr.Caption:='-';
   End;
   Label_AGBezeichnung.Caption:=Arbeitsgang.AG_Bezeichnung;
   Label_Maschine.Caption:=Arbeitsgang.Maschine_Bezeichnung;
   Label_MaschineNr.Caption:=Arbeitsgang.Maschine_Nr;
   Label_Bezeichnung2.Caption:= Artikel.Bezeichnung2;
end;
Patrick

Geändert von Ykcim (22. Mai 2014 um 10:55 Uhr)
  Mit Zitat antworten Zitat