AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Eine Procedur für viele Buttons, wie? (gelöst)
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Procedur für viele Buttons, wie? (gelöst)

Ein Thema von SimonRap · begonnen am 8. Apr 2010 · letzter Beitrag vom 8. Apr 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#1

Eine Procedur für viele Buttons, wie? (gelöst)

  Alt 8. Apr 2010, 13:46
Na toll ich muss den Artikel nochma schreiben, I-Net hat gespackt
Also:
Ich hab ne bestimmte Anzahl von Buttons und (der Code stimmt nicht, aber zur Verdeutlichung) jedesmal wenn auf einen Button geklickt wird, soll dessen Länge verdoppelt werden...
Also müsste ich:
Delphi-Quellcode:
Procedure Btn1Click;
Begin
  bla;
end;
Procedure Btn2Click;
Begin
  bla;
end;
Procedure Btn3Click;
Begin
  bla;
end;
//und so ewig weiter machen
Jetzt frage ich mich:
Könnte man nicht mit der schon mitgelieferten Sender VARiable das irgwndwie dynamisch machen?
also:
Delphi-Quellcode:
procedure btn1Click(sender:Object);
begin
  sender.width:=sender.width*2;
end;
So was is der Art???

Thx schonmal
MfG simon
Simon
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 13:48
Jepp.(Sender as TButton).Width := (Sender as TButton).Width * 2;
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
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#3

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 13:56
Aso ok cool^^
Muss man angeben welcher "typ" von TObject das is?
Also was denn das nen bitBtn ist?
kann man das abfragen und dann ändern?
ein BitBtn hat ja z.B auch width...
Geht das?
mfg und thx schonmal simon
Simon
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 13:59
Ja, das geht auch
Delphi-Quellcode:
If Sender is TButton then...
begin
  TypeCast
end;

If Sender is TBitButton then
begin
  TypeCast
end;
Und wenn Du Dir das Leben weiter vereinfachen möchtest, dann nimm die Prozedur Btn1Click und verwende sie für alle Deine Button auf einmal. Durch den übergebenen Sender weiss der Event wen er breiter machen muß. Alle Buttons auswählen und als Ereignis für OnClick einfach Btn1Click wählen. Damit fallen die Prozeduren Btn2Click / Btn3Click aus Deinem Quellcode weg!
Carsten
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 14:00
Zitat:
Muss man angeben welcher "typ" von TObject das is?
Ja denn jede Klasse ist von TObject direkt oder indirekt abgeleitet
Zitat:
kann man das abfragen und dann ändern?
Abfragen ja, aber ändern nicht. Wäre auch nicht sinnvoll
Sender.ClassName
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#6

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 14:01
TObject ist die Mutter aller Objekte und kennt nur das, was in ihr eingeführt wurde.

Willst du aber auf etwas zugeifen, welches erst in einem Nachfahren definiert wurde, dann mußt du mindestens die Klasse angeben, in welcher die gewünschte Eigenschaft eingeführt wurde.

Für .Width wäre das also mindestens TControl (von welchem TButton ja irgendwann mal abgeleitet wurde)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#7

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 14:03

Danke Leute, super, genau danach hab ich gesucht^^
bis denne simon
Simon
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#8

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 14:10
ok, noch ne kleine frage, hab jetzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  If Sender is TButton then
  begin
   (Sender as TButton).Width := (Sender as TButton).Width * 2;
  end;

  If Sender is TBitBtn then
  begin
    (Sender as TBitBtn).Width := (Sender as TBitBtn).Width * 2;
  end;
end;
So weit so gut, wenn ich auf nen Button klicke wird er doppelt so breit
ABER, wenn ich auf nen BitButton klicke wird er viermal so breit!!!
HÄ?
Warum das?

simon
Simon
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 14:11
Du musst generell auf den Typ Casten und kannst dann auf deren Eigenschaften zugreifen. Einen Cast kannst du generell über
TButton(Sender).Width machen. Wenn Sender jetzt aber nicht mit TButton kompatibel ist (also kein TButton ist oder nicht von TButton abgeleitet wurde) bekommst du eine hässliche Zugriffsverletzung. Um das ein bisschen schöner zu gestalten kannst du den Cast so machen:
(Sender as TButton).Width Wenn das jetzt fehlschlägt kommt eine vielsagende schöne Fehlermeldung. Überprüfen, ob du Sender auf TButton casten kannst, geht über
if (Sender is TButton) then Zu deinem Width-Problem: Width wird in TControl eingeführt. Du kannst also über
Delphi-Quellcode:
if (Sender is TControl) then
  (Sender as TControl).width := 55;
die Breite von TButton und von TBitBtn ändern, da TBitBtn auch von TControl abgeleitet ist.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eine Procedur für viele Buttons, wie?

  Alt 8. Apr 2010, 14:12
Vielleicht weil ein TBitBtn auch ein TButton ist
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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