Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MDI - Abhängigkeiten? (https://www.delphipraxis.net/126494-mdi-abhaengigkeiten.html)

RedDust 26. Dez 2008 10:00


MDI - Abhängigkeiten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich schreibe im Moment ein kleines Verwatungs-Panel. Leider ist es schon fast 3 Jahre her das ich mit Delphi/Pascal gearbeitet habe. Daher meine Hoffnung, das ihr mir helfen könnt.

Wie ihr im Anhang sehen könnt, arbeite ich mit MDI. Die Suche und ähnliches funktioniert tadellos, nur leider, wenn ich die Kundendaten öffne und dann den "Button1" drücke, sollen regulär die Daten geholt werden (Kundennummer aus dem StringGrid vom 1. Form) nur leider erhalte ich den Fehler, den ihr auf dem Screen seht.

So öffne ich das 2. Form:
Delphi-Quellcode:
Tkundendaten_view.Create(kunden_suche);
Button1, löst folgende Aktion aus:
Delphi-Quellcode:
ShowMessage(kunden_suche.user_sheet.Cells[0,0]); //Nur ein Test ob es klappt

Könnt ihr mir eventuell sagen, woran das liegt?

mkinzler 26. Dez 2008 10:04

Re: MDI - Abhängigkeiten?
 
Kennt den die 2. Form kunden_suche?

RedDust 26. Dez 2008 10:06

Re: MDI - Abhängigkeiten?
 
Jap, die 2 kennen sich

Delphi-Quellcode:
implementation

uses ..., kunden_suche_form;
//Edit: Dieser Fehler tritt nicht nur beim StingGrid auf, sondern auf alle Felder (Input, ...) die ich anspreche, obwohl mir der Delphi autocompleter (Also das Ding, wenn man nen Punkt drückt) diese Eigenschaft eindeutig ausgibt.

thkerkmann 26. Dez 2008 12:11

Re: MDI - Abhängigkeiten?
 
Hi,

ein wenig mehr Code könnte nützlich sein. Scheint ein Instanzenproblem zu sein.

Gruss

RedDust 26. Dez 2008 12:52

Re: MDI - Abhängigkeiten?
 
Das Kundensuche Formular:

Delphi-Quellcode:
unit kunden_suche_form;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  Tkunden_suche = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    edit_kundennummer: TEdit;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    user_sheet: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    procedure user_sheetClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    zelle : integer;
  end;

var
  kunden_suche: Tkunden_suche;

implementation

uses hauptformular, kundendaten_view_form;

{$R *.dfm}

procedure Tkunden_suche.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  hs_kis.StatusBar1.Panels[0].Text := 'Status: Fenster "Kundensuche" erfolgreich geschlossen';
end;

procedure Tkunden_suche.FormShow(Sender: TObject);
begin
  hs_kis.StatusBar1.Panels[0].Text := 'Status: Fenster "Kundensuche" erfolgreich generiert';
  with user_sheet do
  begin
    Cells[0,0] := 'Kundennummer';
    Cells[1,0] := 'Name';
    Cells[2,0] := 'Vorname';
    Cells[3,0] := 'Firma';
    Cells[4,0] := 'Sprache';
  end;
end;

procedure Tkunden_suche.Button1Click(Sender: TObject);
var kundennummer, cr, i, j : integer;
    sql             : string;
    ex              : boolean;
begin
  if edit_kundennummer.Text <> '' then
  begin
    try kundennummer := strtoint(edit_kundennummer.Text) except on EConvertError do
      hs_kis.StatusBar1.Panels[0].Text := 'Status: Fehler - Das ist keine Kundennummer!';
    end;
    hs_kis.FMysql.select_db('syscp');
    sql := 'SELECT customernumber, name, firstname, company, def_language FROM panel_customers WHERE customernumber = "'+inttostr(kundennummer)+'"';
    hs_kis.FResult := hs_kis.FMysql.query(sql, true, ex);
    if assigned(hs_kis.FResult) then
    begin
      cr := hs_kis.FResult.RecNo;
      user_sheet.RowCount := hs_kis.FResult.RowsCount+1;

      for i:=0 to hs_kis.FResult.RowsCount-1 do begin
        for j:=0 to hs_kis.FResult.FieldsCount-1 do
          user_sheet.Cells[j,i+1] := hs_kis.FResult.FieldValue(j);
        hs_kis.FResult.Next;
      end;
      if i = 1 then
        hs_kis.StatusBar1.Panels[0].Text := 'Status: '+inttostr(i)+' Datensatz gefunden'
      else
        hs_kis.StatusBar1.Panels[0].Text := 'Status: '+inttostr(i)+' Datensätze gefunden';
      if i > 0 then
        button2.Enabled := true
      else
      begin
        user_sheet.RowCount := 2;
        user_sheet.FixedRows := 1;
      end;
      if i > 1242900 then
      begin
        user_sheet.RowCount := 2;
        user_sheet.FixedRows := 1;
        button2.Enabled := false;
        hs_kis.StatusBar1.Panels[0].Text := 'Status: 0 Datensätze gefunden';
      end;
    end
    else
    begin
      hs_kis.StatusBar1.Panels[0].Text := 'Status: Query konnte nicht ausgeführt werden';
    end;
  end
  else
  begin
    //Wenn KD Nr nicht ausgefüllt
  end;
end;

procedure Tkunden_suche.Button2Click(Sender: TObject);
begin
  FreeAndNil(hs_kis.FResult);
  Tkundendaten_view.Create(kunden_suche);
end;

procedure Tkunden_suche.user_sheetClick(Sender: TObject);
begin
  zelle := user_sheet.Row;
end;

end.
Und das Kundendaten-Formular:

Delphi-Quellcode:
unit kundendaten_view_form;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  Tkundendaten_view = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  kundendaten_view: Tkundendaten_view;

implementation

uses hauptformular, kunden_suche_form;

{$R *.dfm}

procedure Tkundendaten_view.FormCreate(Sender: TObject);
begin
  hs_kis.StatusBar1.Panels[0].Text := 'Status: Fenster "Kundendaten" erfolgreich erstellt';
end;

procedure Tkundendaten_view.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
  hs_kis.StatusBar1.Panels[0].Text := 'Status: Fenster "Kundendaten" erfolgreich geschlossen';
end;

procedure Tkundendaten_view.FormShow(Sender: TObject);
var kundennummer, name, vorname : string;
begin
   
end;

procedure Tkundendaten_view.Button1Click(Sender: TObject);
begin
  TRY ShowMessage(kunden_suche.edit_kundennummer.Text) EXCEPT ON E : Exception DO
    hs_kis.StatusBar1.Panels[0].Text := 'Status: Fehler - '+E.Message+' - '+E.ClassName;
  end;
end;

end.
"hs_kis" ist nur das Hauptformular. Ich hoffe das reicht

Apollonius 26. Dez 2008 13:42

Re: MDI - Abhängigkeiten?
 
In MDI ist es meistens nicht sinnvoll, von einem Formular auf ein anderes Kindformular zuzugreifen, da es immer mehrere Formulare dieser Art geben kann. Daher lösche ich bei MDI-Kind-Formularen auch immer die vorgegebene Variable (var kunden_suche: Tkunden_suche). Du füllst diese Variable auch niemals aus, daher kann es beim Zugriff nur eine Zugriffsverletzung geben.

RedDust 26. Dez 2008 16:33

Re: MDI - Abhängigkeiten?
 
Hallo,

doch das Eingabefeld wird gefüllt, ohne dieses, kommt man gar nicht in das andere Formular rein. Nur egal wie ich das auch mache, ich kann auf den Wert, auch wenn er vorher in einer variable gespeichert war, nicht zugreifen. :(

Apollonius 26. Dez 2008 16:35

Re: MDI - Abhängigkeiten?
 
Wo füllst du kunden_suche?

RedDust 26. Dez 2008 16:39

Re: MDI - Abhängigkeiten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Apollonius
Wo füllst du kunden_suche?

"kunden_suche" ist ein Formular, auf dem mehrere Komponenten sind.

Apollonius 26. Dez 2008 16:45

Re: MDI - Abhängigkeiten?
 
Das weiß ich. Wo weist du der Variablen einen Wert zu? Wird das Formular automatisch erzeugt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 Uhr.
Seite 1 von 3  1 23      

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