![]() |
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:
Button1, löst folgende Aktion aus:
Tkundendaten_view.Create(kunden_suche);
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? |
Re: MDI - Abhängigkeiten?
Kennt den die 2. Form kunden_suche?
|
Re: MDI - Abhängigkeiten?
Jap, die 2 kennen sich
Delphi-Quellcode:
//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.
implementation
uses ..., kunden_suche_form; |
Re: MDI - Abhängigkeiten?
Hi,
ein wenig mehr Code könnte nützlich sein. Scheint ein Instanzenproblem zu sein. Gruss |
Re: MDI - Abhängigkeiten?
Das Kundensuche Formular:
Delphi-Quellcode:
Und das Kundendaten-Formular:
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.
Delphi-Quellcode:
"hs_kis" ist nur das Hauptformular. Ich hoffe das reicht
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. |
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.
|
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. :( |
Re: MDI - Abhängigkeiten?
Wo füllst du kunden_suche?
|
Re: MDI - Abhängigkeiten?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
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. |
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