AGB  ·  Datenschutz  ·  Impressum  







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

TCheckBox.OnClick extern aufrufen

Ein Thema von LoewenZahn · begonnen am 19. Feb 2014 · letzter Beitrag vom 20. Feb 2014
Antwort Antwort
Benutzerbild von LoewenZahn
LoewenZahn

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TCheckBox.OnClick extern aufrufen

  Alt 19. Feb 2014, 17:00
Hallo,

ich habe folgendes Problem:

IST:
Auf einer Form ist eine ganze Horde von Checkboxen angegliedert. Diese haben jeweils eigenes OnClick Event. Nun kann der Benutzer mit den Steuerelementen hantieren und dadurch verschiedene Elemente (Kopfbereich, Bilder, Tabellen, ... ) auf einem Report ein/-ausblenden.

SOLL:
Ich möchte beim OnShow der Form, alle OnClick Events der Checkboxen einmal ausführen. Dadurch sollen die Elemente des Reports, unabhängig der zuletzt gespeicherten Einstellungen, das anzeigen, was die Checkboxen beim Start anzeigen.

VERSUCHT:
Ich habe gedacht, ich könnte einfach wie bei einem Button, das Event via "Button1.click;" aufrufen, geht leider nicht.

Delphi-Quellcode:
  
//Starte das OnClick-Event aller Checkboxen die mit dem Namen cb_dm_ beginnen:
For i:=0 to self.ComponentCount-1 do
    if ( self.Components[i] is TCheckbox )
    and ( Pos('cb_dm_', self.Components[i].Name) = 1 ) then
    begin
      (self.Components[i] as TAdvofficeCheckbox).Click;
    end;
Jemand eine Idee / einen Tipp / Lösungsvorschläge?

Gruß
L.
Tim
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: TCheckBox.OnClick extern aufrufen

  Alt 19. Feb 2014, 18:02
Im Normalfall lagert man solche Dinge in Procedure aus und ruft diese dann auf.

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender:TObject);
begin
  DoSomething();
end;

procedure TForm1.DoSomething;
begin
  DoSomethingWhatYouWant;
end;
Beim OnShow der Form rufst du dann nur noch die DoSomething Methode auf.

Geändert von Aviator (19. Feb 2014 um 18:03 Uhr) Grund: Schreibfehler korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
679 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCheckBox.OnClick extern aufrufen

  Alt 19. Feb 2014, 21:33
SOLL:
Ich möchte beim OnShow der Form, alle OnClick Events der Checkboxen einmal ausführen. Dadurch sollen die Elemente des Reports, unabhängig der zuletzt gespeicherten Einstellungen, das anzeigen, was die Checkboxen beim Start anzeigen.
Wieso erstellst Du nicht eine Procedure, welche den Status (Checked) der Checkboxen abfrägt und entsprechend handelt? So könntest Du im Prinzip auch gleich sämtliche "OnClick" auf diese Prozedur verlinken. So aus dem Bauch heraus habe ich das Gefühl, dass Du damit eine Menge an Quellcodezeilen einsparen kannst.
Roland
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#4

AW: TCheckBox.OnClick extern aufrufen

  Alt 19. Feb 2014, 21:39
Oder auf eine ActionList ausweichen und die Executes in einer Schleife ausführen
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: TCheckBox.OnClick extern aufrufen

  Alt 19. Feb 2014, 21:43
Hallo,

könnte auch so gehen:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  i : Integer;
  c : TComponent;
  n : TNotifyEvent;
begin
  for i := 0 to ComponentCount - 1 do
    begin
      c := Components [i];
      if (c is TAdvOfficeCheckBox) and (Pos ('cb_dm_', c.Name) = 1) then
        begin
          n := TAdvOfficeCheckBox (c).OnClick;
          if Assigned (n) then
            n (c)
        end
    end
end;

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von LoewenZahn
LoewenZahn

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: TCheckBox.OnClick extern aufrufen

  Alt 20. Feb 2014, 08:16
Hallo und danke für die Hilfestellungen!

Ich habe den Code von Volker verwendet, dieser funktioniert einwandfrei, auch wenn diese Methode nicht die eleganteste ist.

Die Anmerkungen der anderen Mitglieder kann ich durchaus verstehen, es macht Sinn die Funktionalitäten in einzelne Proceduren auszulagern. Leider bin ich a. zu faul nun für alle Checkboxen jeweils eine extra Prozedure zu schreiben und b. ist diese Methode die Zeilenärmste.

Gruß
L.
Tim
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

AW: TCheckBox.OnClick extern aufrufen

  Alt 20. Feb 2014, 08:25
Leider bin ich a. zu faul nun für alle Checkboxen jeweils eine extra Prozedure zu schreiben
Normalerweise schreibt man einen Eventhandler und weist diesen dann im OI allen entsprechenden Komponenten zu. Wenn man die konkrete Komponente wissen will, kann man ja den Sender-Parameter auswerten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 22:31 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