AGB  ·  Datenschutz  ·  Impressum  







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

MDI - Abhängigkeiten?

Ein Thema von RedDust · begonnen am 26. Dez 2008 · letzter Beitrag vom 26. Dez 2008
Antwort Antwort
Seite 1 von 3  1 23      
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#1

MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 10:00
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:
Tkundendaten_view.Create(kunden_suche); Button1, löst folgende Aktion aus:
ShowMessage(kunden_suche.user_sheet.Cells[0,0]); //Nur ein Test ob es klappt
Könnt ihr mir eventuell sagen, woran das liegt?
Miniaturansicht angehängter Grafiken
error_236.jpg  
Mario Franze
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 10:04
Kennt den die 2. Form kunden_suche?
Markus Kinzler
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#3

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 10:06
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.
Mario Franze
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#4

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 12:11
Hi,

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

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#5

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 12:52
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
Mario Franze
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 13:42
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#7

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 16:33
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.
Mario Franze
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 16:35
Wo füllst du kunden_suche?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#9

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 16:39
Zitat von Apollonius:
Wo füllst du kunden_suche?
"kunden_suche" ist ein Formular, auf dem mehrere Komponenten sind.
Miniaturansicht angehängter Grafiken
zwischenablage02_457.jpg  
Mario Franze
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: MDI - Abhängigkeiten?

  Alt 26. Dez 2008, 16:45
Das weiß ich. Wo weist du der Variablen einen Wert zu? Wird das Formular automatisch erzeugt?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 17:58 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