Delphi-PRAXiS

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 Probleme mit Elementen In Frames (https://www.delphipraxis.net/68146-probleme-mit-elementen-frames.html)

Real_Thunder 25. Apr 2006 13:27


Probleme mit Elementen In Frames
 
Hallo erstamel.

Gleich vorweg möchte ich sagen das ich ein Delphi Neuling bin, und schon seit Tagen mit Google und in div. Foren Nach der Antwort Gesucht Habe... :wall: :wall: doch nichts gefunden....

Hier nun mein Problem:

Ich erstelle zur laufzeit Frames <= klappt Wundrbar;

beispiel:
Ich klicke auf button 1 und ein frame wird erstellt, wenn ich nun auf button 2 klicke soll der erste frame freigegeben werden, und der 2 erscheinen <= klappt auch wunderbar.

dies soll immer so weitergehen..
Also wenn ihc ein frame erstelle, soll das frame das gerade geöffnet ist freigegeben werden

ds Klappt auch, aber wenn ich nun auf ein element von dem Frame zugreifen möchte dann gibt es eine fehlermeldung
"Undefinierter Bezeichner".
Hier Poste ich mal den Quellcode der Unit

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, frame1, frame31, frame41;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;

    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  anz_frame: TFrame;


implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
  anz_frame.Free;
  anz_frame:=TFrame2.Create(self);
  with anz_frame do
  begin
     Parent:=Form1;
     Left:=16;
     Top:=48;
     width:=700;
     height:=400;
  end;
  anz_frame.edit1.text='Test';

end;

procedure TForm1.Button2Click(Sender: TObject);

  begin
  anz_frame.Free;
  anz_frame:=TFrame3.Create(self);
  with anz_frame do
  begin
     Parent:=Form1;
     Left:=16;
     Top:=48;
     width:=700;
     height:=400;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
  begin
  anz_frame.Free;
  anz_frame:=TFrame4.Create(self);
  with anz_frame do
  begin
    Parent:=Form1;
    Left:=16;
    Top:=48;
    width:=700;
    height:=400;
  end;
end;

end.

das feld edit 1 Existiert auf der Frame.


ich danke Im Vorraus für eure Hilfe

MfG real_Thunder

Angel4585 25. Apr 2006 13:35

Re: Probleme mit Elementen In Frames
 
setz mal den Namen des Frames(name:='Framename')

Fast vergessen: :party: Herzlich Willkommen in der DP :-D :dp:

Hawkeye219 25. Apr 2006 13:41

Re: Probleme mit Elementen In Frames
 
Hallo Real_Thunder,

willkommen in der DP!

Du hast die Variable anz_frame als TFrame vereinbart, das ist der Grund für die Fehlermeldung. TFrame besitzt kein Edit-Feld, deine Instanz von Typ TFrame2 aber wohl.
Versuche es einmal mit folgender Vereinbarung:

Delphi-Quellcode:
var anz_frame : TFrame2;
Gruß Hawkeye

Real_Thunder 25. Apr 2006 14:24

Re: Probleme mit Elementen In Frames
 
Danke für die Antwort, habe es so gemacht, und ich habe zugriff auf die elemente.

Nun ist aber mein Schema Zusammengebrochen

ich möchte immer wenn ich ein frame erstelle, dass das frame was vorher geöffnet wurden ist, wieder freigegeben wird.


also quasi wenn ich auf den Button klicke, das erst anz_frame.free ausgeführt wird und dann eine neue form erstellt werden soll.

wenn ich nun aber anz_frame1 = anzframe xx benutze dann muß ich erst eine abfrage machen, welcher gerade geöffnet ist...

Also so wie ich das gemacht habe, wird das frame einfach nciht weider freigegeben...

wenn ich die anz_frame innerhalb der prozedur mit

Delphi-Quellcode:
var anz_frame : TFrame2;
declariere dann nimmt er mir bei dem anz_frame.free den button raus....

bin i echt kurz vor dem Durchdrehen, mir ist von der logik her schon klar das ich anz_frame neu definiert habe , aber es muß noch die möglichkeit geben, auszulesen welcher frame gerade offen ist, und diesen dann wieder freigeben.....

Angel4585 25. Apr 2006 14:30

Re: Probleme mit Elementen In Frames
 
Deklariere anz_frame wieder als TFrame

in den Prozeduren verwendest du dann jeweils:

TFrame3(anz_Frame) anstatt dem normalen anz_frame
ausser bei
Delphi-Quellcode:
anz_Frame:=TFrame3.Create(Self);//hier bleibt es so
also
Delphi-Quellcode:
TFrame3(anz_frame).Free;
und
Delphi-Quellcode:
with TFrame3(anz_frame) do
und das ganze noch für TFrame2 und TFrame4, gleiches Prinzip

Real_Thunder 25. Apr 2006 16:37

Re: Probleme mit Elementen In Frames
 
also komme ich theoretisch um eine If abfrage nicht drum rum, wenn ich selectieren möchte welcher frame geschlossen werden soll.

Ok, ich versuche mal mein bestes.

P.S.

Hier ist es um einiges freundlicher als in anderen Foren wo man erstmal zu hören bekommt:

darauf mußt du selbst kommen usw...

Vielen dank für die Hilfe

Real_Thunder 25. Apr 2006 16:49

Re: Probleme mit Elementen In Frames
 
Wunderbar... :lol:

ES GEHT....... :coder2:

Ihr seit hier echt super..

VIELEN DANK

Angel4585 25. Apr 2006 16:51

Re: Probleme mit Elementen In Frames
 
:dp: :coder: :dp: :firejump:

Real_Thunder 3. Mai 2006 11:19

Re: Probleme mit Frames
 
Hallo ihc bin es wieder, irgendwie werde ich aus dem Frames nicht schlau,

das ich die frames alle auf der hauptform aus tauschen kann ist an sich kein poblem,
ich denke mein problem ist das ich das system hinter den frames nicht ganz verstehe , wegen den (anz_frame in klammern),

naja nun zu meinem hauptproblm, ich möchte aus einem frame heraus, das die aktuelle frame schließt, und sich eine andere frame einläd... an sich klapt es auch, wenn da nicht gleich eine fehlermeldung kommen würde

ic bekomme ene fehlermeldung, EAccess Violation, wenn ich dan alerdings auf fortfahren klicke, wechsle t er den frame, gehe ich nun wieder in den anderen frame, und mache das ganze noch mal, dann macht er es ohne fehlermeldung...

habe es auf verschiede weisen probiert, einmal genau so wie es oben beschrieben ist.... geht aber nicht...

dan hab ich es so versucht das er es von der form auf macht, mit

Delphi-Quellcode:
form1.KundeSuchen1.Click;
Machmal bringt er mir auch den Fehler Abstracker Fehler...

Für einen Stupps in die richtige Richtung währe ich sehr Dankbar

marabu 3. Mai 2006 11:35

Re: Probleme mit Elementen In Frames
 
Hallo.

Deine Frames solltest du besser so einbinden:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Panel1: TPanel;     // Left: 16; Top: 48; Height: 400; Width: 700
    procedure Button1Click(Sender: TObject);
  private
    FVisibleFrame: TFrame;
    procedure SetVisibleFrame(frame: TFrame);
  public
    property VisibleFrame: TFrame read FVisibleFrame write SetVisibleFrame;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SetVisibleFrame(frame: TFrame);
begin
  if Assigned(FVisibleFrame) then
    FVisibleFrame.Free;
  FVisibleFrame := frame;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  VisibleFrame := TFrame2.Create(self);
  with VisibleFrame as TFrame2 do
  begin
    Parent := Panel;
    Align := alClient;
    Edit1.Text := 'Test';
  end;
end;
Wenn du dann immernoch Probleme beim Wechseln der Frames hast, dann musst du mal deinen aktuellen Code zeigen.

Grüße vom marabu

Real_Thunder 3. Mai 2006 13:00

Re: Probleme mit Elementen In Frames
 
Diese variante funktioniert auch soweit.

Bloß wenn das Frame bereits eingeladen ist, und es nochmal auswähle bekomm eich die meldung das es bereits existiert..
Machmal Bekomme ich auch die Fehlermeldung Abstrakter Fehler....

Hier mal der Quellcode für die Form

Delphi-Quellcode:
unit haupt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, umysqlvio, uMysqlCT, uMysqlClient, uMysqlHelpers, StdCtrls, FMTBcd,
  DB, SqlExpr, ComCtrls, Menus, ku_gesamt, neu_kunde, ku_bearb, ku_suche;

 {$I mysqlinc.inc}



type
  TForm1 = class(TForm)
    StatusBar2: TStatusBar;
    MainMenu1: TMainMenu;
    Optionen1: TMenuItem;
    Verbindungseinstellunegn1: TMenuItem;
    Kunden1: TMenuItem;
    KundeSuchen1: TMenuItem;
    KundeLschen1: TMenuItem;
    N2: TMenuItem;
    Hilfe1: TMenuItem;
    Verbindung1: TMenuItem;
    Verbindungsstatus1: TMenuItem;
    N1: TMenuItem;
    VerbindungTrennen1: TMenuItem;
    VerbindungHerstellen1: TMenuItem;
    AlleKundenanzeigen1: TMenuItem;
    Label1: TLabel;
    Kundehinzufgen2: TMenuItem;
    temp_var_type: TEdit;
    temp_var_value: TEdit;
    Kundendatenbearbeiten1: TMenuItem;
    procedure KundeSuchen1Click(Sender: TObject);
    procedure Kundendatenbearbeiten1Click(Sender: TObject);
    procedure Kundehinzufgen2Click(Sender: TObject);
    procedure AlleKundenanzeigen1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);




  private
    FMysql: TMysqlClient;
    FResult: TMysqlResult;
    FVisibleFrame: TFrame;
    procedure SetVisibleFrame(frame: TFrame);

  public
    property VisibleFrame: TFrame read FVisibleFrame write SetVisibleFrame;

 end;






var
  Form1: TForm1;

  anz_frame: TFrame;


  cou_res: integer;
  implementation

{$R *.dfm}


 procedure TForm1.SetVisibleFrame(frame: TFrame);
  begin
  if Assigned(FVisibleFrame) then
    FVisibleFrame.Free;
  FVisibleFrame := frame;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
  FMysql := TMysqlClient.create;

      StatusBar2.Panels.Add();
    StatusBar2.Panels[0].Text:='Nicht Verbunden';

  // Eigenschaften setzen
  FMysql.Host := 'antieo.de';
  FMysql.port := 3306;
  FMysql.user :='delphi';
  FMysql.password := 'sqltest';
  FMysql.UnixSocket := '';
  FMysql.Db := 'delphi'; // Datenbank auf dem Server
  FMysql.UseNamedPipe := false;
  FMysql.UseSSL := false;
  FMysql.Compress := true;
  FMysql.TrySockets := false;



end;
// Bei Programmende muss das Objekt natürlich auch wieder freigegeben werden:


procedure TForm1.FormDestroy(Sender: TObject);
begin
  FMysql.Free;
  if FResult<>nil then
    FResult.free;


   FMysql.close;
end;


procedure TForm1.AlleKundenanzeigen1Click(Sender: TObject);


var q: string;
    ex: boolean;
    j: integer;

begin
  VisibleFrame := TKunden_gesamt.Create(self);
  with VisibleFrame as TKunden_gesamt do
  begin
     Parent:=Form1;
     Left:=10;
     Top:=10;
     width:=910;
     height:=570;


 if assigned(FResult) then begin
    if FMysql.Status<>MYSQL_STATUS_READY then
      ShowMessage('Ein Ergebnis wurde unvollständig gelesen!');
      FreeAndNil(FResult);
    end;

    q := 'SELECT id, vorname, name FROM kunden ORDER BY id';

    FResult := FMysql.query(q, true, ex);

    if assigned(FResult) then begin
      cou_res:= FResult.RowsCount-1;
      if assigned(FResult) then begin
        q := 'SELECT id, vorname, name FROM kunden ORDER BY id';
        FResult := FMysql.query(q, true, ex);
        if assigned(FResult) then begin
          // ShowMessage('Query: OK - Ergebnis gespeichert');
          cou_res:= FResult.RowsCount-1;
          for j:=0 to FResult.RowsCount-1 do begin
            ku_list.items[j]:= FResult.FieldValue(2)+' - '+ FResult.FieldValue(1) ;
            ku_id.Items[j]:= FResult.FieldValue(0);
            FResult.Next;
          end;
          FreeAndNil(FResult);
        end
        else
        if ex then begin
          ShowMessage('Query: OK - ausgeführt')
        end
    else
      ShowMessage('Query fehlgeschlagen: '+FMysql.LastError);
    end;
end;





  end;

 // FMysql(freeAndNil);

end;







procedure TForm1.Kundehinzufgen2Click(Sender: TObject);
begin
  VisibleFrame := TKu_hinzu.Create(self);
  with VisibleFrame as TKu_hinzu do
  begin
     Parent:=Form1;
     Left:=10;
     Top:=10;
     width:=910;
     height:=570;

  end;
end;

procedure TForm1.Kundendatenbearbeiten1Click(Sender: TObject);
begin
  VisibleFrame := TKu_bea.Create(self);
  with VisibleFrame as TKu_bea do

 begin
     Parent:=Form1;
     Left:=10;
     Top:=10;
     width:=910;
     height:=570;

  end;
end;

procedure TForm1.KundeSuchen1Click(Sender: TObject);
begin
  VisibleFrame := TKu_suche1.Create(self);
  with VisibleFrame as TKu_suche1 do

 begin
     Parent:=Form1;
     Left:=10;
     Top:=10;
     width:=910;
     height:=570;

  end;
end;

end.

marabu 3. Mai 2006 13:12

Re: Probleme mit Elementen In Frames
 
Vielleicht besser so:
Delphi-Quellcode:
procedure TForm1.AlleKundenanzeigen1Click(Sender: TObject);
var
  q: string;
  ex: boolean;
  j: integer;
begin
  if (VisibleForm = nil) or not (VisibleForm is TKunden_Gesamt) then
    VisibleFrame := TKunden_gesamt.Create(self);
  // ...
marabu

Real_Thunder 3. Mai 2006 13:52

Re: Probleme mit Elementen In Frames
 
Schande auf mein Haupt,
darauf hätte ich auch selbst kommen können, da einfach ne abfrage vor zu setzten *schäm*

Nun versuche ich das Problem in den Griff zu bekommen, das ich aus einer Frame in eine Andere wecheln möchte.

Nach meiner Logig habe ich es so versucht.
Ich möchte vom Frame Kunden Beareiten, zu kunden Suchen wechseln

wenn ich es so mache, dann bekomm eich ein Access Violation.....


Delphi-Quellcode:
unit ku_bearb;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, umysqlvio, uMysqlCT, uMysqlClient, uMysqlHelpers, ku_suche;

  {$I mysqlinc.inc}

type
    Tku_bea = class(TFrame)
    GroupBox1: TGroupBox;
    Label10: TLabel;
    Label9: TLabel;
    Label8: TLabel;
    Label7: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label1: TLabel;
    ku_bea_plz: TEdit;
    ku_bea_vname: TEdit;
    ku_bea_strasse: TEdit;
    ku_bea_hsnr: TEdit;
    ku_bea_nname: TEdit;
    ku_bea_tel: TEdit;
    ku_bea_fax: TEdit;
    ku_bea_url: TEdit;
    ku_bea_email: TEdit;
    ku_bea_zusatz: TMemo;
    GroupBox2: TGroupBox;
    Button2: TButton;
    ku_bea_ort: TComboBox;
    Button3: TButton;
    Button1: TButton;
    Label2: TLabel;
    Button4: TButton;
    GroupBox3: TGroupBox;
    u_hinweis: TLabel;
    ku_bea_kdnr: TEdit;
    Label11: TLabel;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ku_bea_plzChange(Sender: TObject);
    procedure ku_bea_kdnrChange(Sender: TObject);

  private

    FMysql: TMysqlClient;
    FResult: TMysqlResult;
  public
    { Public-Deklarationen }
  end;

var

kd_nname, kd_vname, kd_strasse, kd_hsnr, kd_plz, kd_ort, kd_email: string;
kd_url, kd_zusatz, kd_tel, kd_fax: string;
 TKu_suche1: TFrame;

  anz_frame: TFrame;
  anz_frame2: TFrame;
implementation

uses haupt;

{$R *.dfm}

procedure Tku_bea.ku_bea_kdnrChange(Sender: TObject);

var

  q: string;
  ex: boolean;


begin

if length(ku_bea_kdnr.Text) < 10 then u_hinweis.Caption:='Bitte Kundennummer vollständig eingeben';


  if length(ku_bea_kdnr.Text) = 10 then begin
   u_hinweis.Caption:='Prüfe Kundendaten';
    FMysql := TMysqlClient.create;

  // Eigenschaften setzen
  FMysql.Host := 'antieo.de';
  FMysql.port := 3306;
  FMysql.user :='delphi';
  FMysql.password := 'sqlmain';
  FMysql.UnixSocket := '';
  FMysql.Db := 'delphi'; // Datenbank auf dem Server
  FMysql.UseNamedPipe := false;
  FMysql.UseSSL := false;
  FMysql.Compress := true;
  FMysql.TrySockets := false;

  q := 'SELECT name, vorname, strasse, hsnr, plz, ort, tel, fax, email, url, zusatz FROM kunden WHERE kdnr="'+ ku_bea_kdnr.Text +'"';

    FResult := FMysql.query(q, true, ex);

    if FResult.RowsCount > 0 then begin

    // Daten Einlesen

      kd_nname:=   Fresult.FieldValue(0);
      kd_vname:=   Fresult.FieldValue(1);
      kd_strasse:= Fresult.FieldValue(2);
      kd_hsnr:=    Fresult.FieldValue(3);
      kd_plz:=     Fresult.FieldValue(4);
      kd_ort:=     Fresult.FieldValue(5);
      kd_tel:=     Fresult.FieldValue(6);
      kd_fax:=     Fresult.FieldValue(7);
      kd_email:=   Fresult.FieldValue(8);
      kd_url:=     Fresult.FieldValue(9);
      kd_zusatz:=  Fresult.FieldValue(10);


    // Daten zuweisen;
      ku_bea_plz.text :=     kd_plz;
      ku_bea_nname.text :=   kd_nname;
      ku_bea_vname.text :=   kd_vname;
      ku_bea_strasse.text := kd_strasse;
      ku_bea_hsnr.text :=    kd_hsnr;
      ku_bea_ort.text :=     kd_ort;
      ku_bea_tel.text :=     kd_tel;
      ku_bea_fax.text :=     kd_fax;
      ku_bea_email.text :=   kd_email;
      ku_bea_url.text :=     kd_url;
      ku_bea_zusatz.text :=  kd_zusatz;


     FreeAndNil(Fresult);





      // Neue Optionen
        ku_bea_kdnr.Enabled :=   False;
        u_hinweis.Caption  :=   'Kunde kann bearbeitet werden';


      // Buttons Aktivieren / Deaktivieren
        button1.Enabled:=  true;
        button2.Enabled:=  true;
        button3.Enabled:=  false;
        button4.Enabled:=  true;


      // felder aktivieren
        ku_bea_nname.Enabled :=    true;
        ku_bea_vname.Enabled :=    true;
        ku_bea_strasse.Enabled :=  true;
        ku_bea_hsnr.Enabled :=     true;
        ku_bea_plz.Enabled :=      true;
        ku_bea_ort.Enabled :=      true;
        ku_bea_tel.Enabled :=      true;
        ku_bea_fax.Enabled :=      true;
        ku_bea_email.Enabled :=    true;
        ku_bea_url.Enabled :=      true;
        ku_bea_zusatz.Enabled :=   true;

        ku_bea_nname.SetFocus;

    end
      else
     u_hinweis.Caption:= 'Kundennummer nicht in der Datenbank';




  end;

end;







procedure Tku_bea.ku_bea_plzChange(Sender: TObject);
var
  q: string;
  j: integer;
  ex: boolean;

begin
   ku_bea_ort.Text:='';
  if length(ku_bea_plz.text) = 5 then begin
    ku_bea_ort.Text:='';
    FMysql := TMysqlClient.create;

    // Eigenschaften setzen
    FMysql.Host := 'antieo.de';
    FMysql.port := 3306;
    FMysql.user :='delphi';
    FMysql.password := 'sqlmain';
    FMysql.UnixSocket := '';
    FMysql.Db := 'delphi'; // Datenbank auf dem Server
    FMysql.UseNamedPipe := false;
    FMysql.UseSSL := false;
    FMysql.Compress := true;
    FMysql.TrySockets := false;

    q:= 'SELECT Ort FROM orte Where PLZ ="'+ku_bea_plz.text+'"';
    FResult := FMysql.query(q, true, ex);
    ku_bea_ort.Items.Clear;

    if Fresult.RowsCount > 0 then begin
      If Fresult.RowsCount = 1 then
        ku_bea_ort.Text:=FResult.FieldValue(0)
      else
        ku_bea_ort.Text:='Bitte wählen';

      for j:=0 to FResult.RowsCount-1 do begin


        ku_bea_ort.Items.add(FResult.FieldValue(0));
        FResult.Next;
      end;
    end;
    FreeAndNil(FResult);


  end;




end;

procedure Tku_bea.Button1Click(Sender: TObject);
begin
      ku_bea_plz.text :=     kd_plz;
      ku_bea_nname.text :=   kd_nname;
      ku_bea_vname.text :=   kd_vname;
      ku_bea_strasse.text := kd_strasse;
      ku_bea_hsnr.text :=    kd_hsnr;
      ku_bea_ort.text :=     kd_ort;
      ku_bea_tel.text :=     kd_tel;
      ku_bea_fax.text :=     kd_fax;
      ku_bea_email.text :=   kd_email;
      ku_bea_url.text :=     kd_url;
      ku_bea_zusatz.text :=  kd_zusatz;
end;

procedure Tku_bea.Button4Click(Sender: TObject);
begin

      // Neue Optionen
        ku_bea_kdnr.Enabled :=   true;
        ku_bea_kdnr.Enabled :=   true;



      // Buttons Aktivieren / Deaktivieren
        button1.Enabled:=  false;
        button2.Enabled:=  false;
        button3.Enabled:=  true;
        button4.Enabled:=  false;


      // felder Deaktivieren
        ku_bea_nname.Enabled :=    false;
        ku_bea_vname.Enabled :=    false;
        ku_bea_strasse.Enabled :=  false;
        ku_bea_hsnr.Enabled :=     false;
        ku_bea_plz.Enabled :=      false;
        ku_bea_ort.Enabled :=      false;
        ku_bea_tel.Enabled :=      false;
        ku_bea_fax.Enabled :=      false;
        ku_bea_email.Enabled :=    false;
        ku_bea_url.Enabled :=      false;
        ku_bea_zusatz.Enabled :=   false;




      // Felder Leeren
        ku_bea_kdnr.text :=     '';
        ku_bea_plz.text :=     '';
        ku_bea_nname.text :=   '';
        ku_bea_vname.text :=   '';
        ku_bea_strasse.text := '';
        ku_bea_hsnr.text :=    '';
        ku_bea_ort.text :=     '';
        ku_bea_tel.text :=     '';
        ku_bea_fax.text :=     '';
        ku_bea_email.text :=   '';
        ku_bea_url.text :=     '';
        ku_bea_zusatz.text :=  '';

         u_hinweis.Caption  :=   'Bitte vollständige Kundennummer eingeben';

         ku_bea_kdnr.SetFocus;

end;




// Daten Updaten
procedure Tku_bea.Button2Click(Sender: TObject);

var
  q1,q4,q5: string;
  q: string;
  ex: boolean;

begin
 FMysql.Host := 'antieo.de';
  FMysql.port := 3306;
  FMysql.user :='delphi';
  FMysql.password := 'sqlmain';
  FMysql.UnixSocket := '';
  FMysql.Db := 'delphi'; // Datenbank auf dem Server
  FMysql.UseNamedPipe := false;
  FMysql.UseSSL := false;
  FMysql.Compress := true;
  FMysql.TrySockets := false;









    // Daten Vergleichen

    q1:= 'UPDATE kunden SET ';
    q4:='';
      if kd_nname <> ku_bea_nname.Text then q4:=    q4+ ', name ="'    +ku_bea_nname.Text+'"';
      if kd_vname <> ku_bea_vname.Text then q4:=    q4+ ', vname ="'   +ku_bea_vname.Text+'"';
      if kd_strasse <> ku_bea_strasse.Text then q4:= q4+ ', strasse ="' +ku_bea_strasse.Text+'"';
      if kd_hsnr <> ku_bea_hsnr.Text then q4:=      q4+ ', hsnr ="'    +ku_bea_hsnr.Text+'"';
      if kd_plz <> ku_bea_plz.Text then q4:=        q4+ ', plz ="'     +ku_bea_plz.Text+'"';
      if kd_ort <> ku_bea_ort.Text then q4:=        q4+ ', ort ="'     +ku_bea_ort.Text+'"';
      if kd_tel <> ku_bea_tel.Text then q4:=        q4+ ', tel ="'     +ku_bea_tel.Text+'"';
      if kd_fax <> ku_bea_fax.Text then q4:=        q4+ ', fax ="'     +ku_bea_fax.Text+'"';
      if kd_email <> ku_bea_email.Text then q4:=    q4+ ', email ="'   +ku_bea_email.Text+'"';
      if kd_url <> ku_bea_url.Text then q4:=        q4+ ', url ="'     +ku_bea_url.Text+'"';
      if kd_zusatz <> ku_bea_zusatz.Text then q4:=  q4+ ', zusatz ="'  +ku_bea_zusatz.Text+'"';

      if length(q4) > 0 then begin

        q5:= ' WHERE kdnr="'+ku_bea_kdnr.Text+'"';

        Delete(q4,1,2);

         q:= q1+q4+q5 ;

        FResult := FMysql.query(q, true, ex);

        button1.Enabled:=false;
        button2.Enabled:=false;
        button3.Enabled:=true;
        button4.Enabled:=true;

        ku_bea_nname.Enabled :=    false;
        ku_bea_vname.Enabled :=    false;
        ku_bea_strasse.Enabled :=  false;
        ku_bea_hsnr.Enabled :=     false;
        ku_bea_plz.Enabled :=      false;
        ku_bea_ort.Enabled :=      false;
        ku_bea_tel.Enabled :=      false;
        ku_bea_fax.Enabled :=      false;
        ku_bea_email.Enabled :=    false;
        ku_bea_url.Enabled :=      false;
        ku_bea_zusatz.Enabled :=   false;




      end;

u_hinweis.Caption  :=   'Kunde Erfolgreich Bearbeitet';


end;

procedure Tku_bea.Button3Click(Sender: TObject);
begin


form1.KundeSuchen1.Click;
end;

end.

marabu 5. Mai 2006 09:19

Re: Probleme mit Elementen In Frames
 
Hi.

Wenn du den Wechsel des Frames über Button3 auslöst, dann sägst du an dem Ast auf dem du sitzt. Vielleicht ist eine Werkzeugleiste ein passender Ort zur Aufnahme deines Schalters. Wenn du es aber so belassen willst, dann ersetze den Aufruf von Form1.KundeSuchen1.Click() besser durch eine custom message.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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