Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi OnStateChange Ereignis Problem (https://www.delphipraxis.net/124647-onstatechange-ereignis-problem.html)

needatip 22. Nov 2008 10:47

Datenbank: MS SQL Server • Version: 2000 • Zugriff über: ADO

OnStateChange Ereignis Problem
 
Hallo, ich ändere im OnStateChange Ereignis die Farben der Komponenten auf meinem Formular und zwar abhängig vom gerade verwendeten Status, Einfügen, Ändern etc.

Delphi-Quellcode:
...
      case (sender as TDataSource).DataSet.State of
      dsEdit, dsInsert: begin
          for i := 0 to ComponentCount - 1 do
          begin
            if Components[i] is TDBEdit then TDBEdit(Components[i]).Color := clWhite;
            if Components[i] is TDBLookupComboBox then TDBLookupComboBox(Components[i]).Color := clWhite;
            if Components[i] is TDBMemo then TDBMemo(Components[i]).Color := clWhite;
          end;
        end;
      dsBrowse: begin
          for i := 0 to ComponentCount - 1 do
          begin
            if Components[i] is TDBEdit then TDBEdit(Components[i]).Color := $00FFE6E1;
            if Components[i] is TDBLookupComboBox then TDBLookupComboBox(Components[i]).Color := $00FFE6E1;
            if Components[i] is TDBMemo then TDBMemo(Components[i]).Color := $00FFE6E1;
          end;
        end;
...
Jetzt hab ich auf dem Formular noch eine Checkbox mit der ich mittels AutoEdit meiner DataSource alle Komponenten auf sog. 'Dauerweiß' einfärben will.
Dabei sollen alle Komponenten, solange die Checkbox gecheckt ist, weiß bleiben. d.h. auch beim weiteren Scrollen, blättern usw.
Erst wenn die Checkbox wieder 'unchecked' ist, soll auch die Farbe der Komponenten wieder geändert werden.

Delphi-Quellcode:
...
begin
  if CheckBox2.Checked then
     DM1.DSPOS.AutoEdit := true
  else
     DM1.DSPOS.AutoEdit := false;
end;
...
Alleine der Aufruf von AutoEdit := ture ändert die Farben noch nicht.
Wie kann ich das am besten lösen?

s.h.a.r.k 22. Nov 2008 11:05

Re: OnStateChange Ereignis Problem
 
ruf doch die methode mit den entsprechenden parametern auf?
Delphi-Quellcode:
OnStateChange( {Paramter} );

needatip 23. Nov 2008 07:05

Re: OnStateChange Ereignis Problem
 
OK, kannst du mir ein Beispiel zeigen.
Welchen Parameter kann ich hier verwenden?

s.h.a.r.k 25. Nov 2008 11:25

Re: OnStateChange Ereignis Problem
 
und zwar hast du doch geschrieben, dass du im OnStateChange-ereignis etwas machst. wenn du dir die methode anschaust, dann findest du du sicherlich selbst die nötigen informationen.

wenn ich die onclick-methode eines buttons aufrufen will, dann muss ich das wie folgt machen:
Delphi-Quellcode:
// dies ist die onclick-methode, die beim
// onclick eines buttons ausgeführt wird
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Nachricht ausgeben
  showMessage('Es wurde auf den Button geklickt');
end;

// So kann ich das OnClick des Buttons in einer
// anderen Methode aufrufen
procedure TForm1.TestMethode();
begin
  // "Virtueller Klick" auf den Button1
  // Dies funktioniert aber wohl nur bei einem
  // TButton
  Button1.Click();

  { ODER WIE FOLGT }
  // Direkter Aufruf der Methode
  Button1Click( Button1 ); // <-- hier musst du ein Sender vom Typ TObject übergeben.
end;
nun alles klar!? ;)

needatip 11. Dez 2008 08:21

Re: OnStateChange Ereignis Problem
 
:xmas: War leider auswärts, und hatte keine Möglichkeit zu antworten.
Na klar. Jetzt hab ichs gelöst.

Vielen Dank nochmal.


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