AGB  ·  Datenschutz  ·  Impressum  







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

TObjekt ???

Ein Thema von Sheppard · begonnen am 28. Mär 2005 · letzter Beitrag vom 28. Mär 2005
Antwort Antwort
Benutzerbild von Sheppard
Sheppard

Registriert seit: 26. Mär 2005
Ort: Ebersbrunn
6 Beiträge
 
Delphi 6 Personal
 
#1

TObjekt ???

  Alt 28. Mär 2005, 19:03
hi leutz,

Ich brauch wieder mal Hilfe!

Ich will ein Programm schreiben das aus einer Datenbank, Einträge ausliest und dann automatisch das Popupmenü mit TMenuItems erweitert! Klappt alles!

Nur wenn ich jeden Butten ein "OnClick" Ereignis geben will dauert das ewig und ist auch nicht kompatible auf anderen Rechnern!

Da das "OnClick" Ereignis nur (Sender:TObjekt) haben darf, kann ich nur jeden Butten ein und dasselbe Ereignis geben!

Ich möchte aber das jeder Button dynamisch erzeugt wird und dann ein Programm startet dessen Pfad in einer Datenbank steht!

Vielen Dank im Vorraus
Frank Schwabe
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TObjekt ???

  Alt 28. Mär 2005, 19:10
Dann nutze doch die Eigenschaft Tag des Buttons, um zu unterscheiden, welches Objekt es ist. Nummeriere die Buttons einfach fortlaufend wenn sie erstellt werden.

Delphi-Quellcode:
procedure TForm1.ButtonXClick(Sender: TObject);
begin
  if (Sender.ClassName = 'TButton') then begin
    case (Sender AS TButton).Tag of
      1: ShowMessage('Button1');
      2: ShowMessage('Button2');
      3: ShowMessage('Button3');
      ...
    end;
 end;//if
end;
MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: TObjekt ???

  Alt 28. Mär 2005, 19:33
Zitat:
Dann nutze doch die Eigenschaft Tag des Buttons, um zu unterscheiden, welches Objekt es ist. Nummeriere die Buttons einfach fortlaufend wenn sie erstellt werden.
Richtig. Dann wird auch den code so aussehen :
Delphi-Quellcode:
procedure TForm1.ButtonXClick(Sender: TObject);
begin
    case TComponent(Sender).Tag of // TButton(Sender).Tag
      1: ShowMessage('Button1');
      2: ShowMessage('Button2');
      3: ShowMessage('Button3');
      ...
    end;
end;
Ich glaube, irgendwo gelesen zu haben, dass man lieber AS weglassen sollte. Das Code wird unnötig länger.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: TObjekt ???

  Alt 28. Mär 2005, 20:55
Zitat von sniper_w:
Ich glaube, irgendwo gelesen zu haben, dass man lieber AS weglassen sollte. Das Code wird unnötig länger.
as wird vom Compiler in eine "is" Abfrage mit Exception bei Fehler aufgelöst. Und das jedesmal. Ein TMyObject(obj) hingegen ist nur ein interpretieren der Daten, es entsteht dabei kein zusätzlicher Code. Es kann aber wegen der fehlenden Exception zu einer Schutzverletzung kommen, wenn das Objekt mal doch nicht vom erwarteten Typ ist.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: TObjekt ???

  Alt 28. Mär 2005, 21:10
Komplett OT:
Aber einInstance as Type liest sich einfach schneller als einType(Instance) .
Letzteres könnte ja ein Funktionsaufruf sein. Was ein zweites genaueres Hinsehen erfordert.
Ich persönlich bevorzuge also immer "as", außer Optimierungen verbieten es mir.

Es wäre auch genauso möglich von TMenuItem abzuleiten damit man der Instanz den Dateinamen geben kann.
Beim Click würde das Item dann die App starten, ohne dass du dich im Formular code darum kümmern musst.

Auch wenn es gerne vergessen wird, Delphi ist eine OO Sprache.
  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 18:23 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