AGB  ·  Datenschutz  ·  Impressum  







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

Panel mit 4 Labels von TPanel ableiten

Ein Thema von Nikolas · begonnen am 1. Mär 2007 · letzter Beitrag vom 1. Mär 2007
Antwort Antwort
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 10:38
Hallo

Ich habe leider schon länger nichts mehr geschrieben und versuch gerade wieder reinzukommen.

Mein aktuelles Problem ist dieses: Ich will eine Anzahl von Panels haben, die jeweils vier Label tragen. Mein erster Ansatz war dieser:
Delphi-Quellcode:
CStunde = class(Tobject)
  public
  Panel: TPanel;
  id: string;
  list: array[1..4] of TLabel;
  Constructor Create(t,l,h,w: integer; form: TForm);
end;
den ich schon mit Hilfer der DP bekommen habe. Mein Problem liegt jetzt darin, an das onclick ereigniss des Panels zu kommen. Im Endeffekt will ich damit zB. die ID als showmessage anzeigen oder ein weiteres Formular öffnen. Ich glaube mich zu erinner, dass ich früher bei dynamisch erstellen Komponenten einfach nur ein list[i].onclick:= myonclick(Self); schreiben konnte, wenn list als array[1..5] of TPanel und myonclick als procedure Myonlick(Sender: Tobject) definiert war.

Wenn ich das jetzt aber versuche, also z.B. mit
Delphi-Quellcode:
Constructor CStunde.create(t,l,h,w: integer; Form: TForm);
var
i: byte;
begin
        
panel := TPanel.Create(nil);
panel.OnClick :=myonclick(self)
bekomme ich
Zitat:
[Fehler] E2010 Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'
Was habe ich falsch gemacht?

Alternativ habe ich mir überlegt, gleich von TPanel abzuleiten, wird mir beim self:= tPanel.create; natürlich gesagt, dass CSTunde und TPanel inkompatibel sind. Wahrscheinlich muss ich da mit inherited. o.ä. dran, aber ich habe leider schon zu lange nicht mehr ObjectOrientiert gearbeitet.

Es wäre also sehr nett, wenn mir jemand auf die Sprünge helfen könnte.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 10:43
Es darf keine freie Prozedur sein, sondern muß eine Methode sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 10:49
Laut OH: ''Eine Methode ist eine Prozedur oder Funktion, die zu einer bestimmten Klasse gehört.''
Nur: Zu welcher Klasse denn und wie schreibe ich dass?
Delphi-Quellcode:
CStunde = class(Tobject)
 public

 Panel: TPanel;
 id: string;
 list: array[1..4] of TLabel;

 Procedure MyClick(sender: TObject);
 Constructor Create(t,l,h,w: integer; form: TForm);

end;
Ändert nichts an meinem Problem. Was habe ich falsch gemacht?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 10:51
Am besten nicht dieser Klasse sondern einer anderen (es bietet sich hier immer die Form an, auf welcher die Komponente nachher liegt.)

Delphi-Quellcode:
panel := TPanel.Create(Form1);
panel.OnClick :=Form1.myonclick;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 10:56
Aber ich weiss doch gar nicht, wo meine Klasse nachher liegt, bzw. will ich sie auf mehreren Formularen einsetzen. (Deswegen übergebe ich im Create schon ein TForm).
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 10:59
Ja deshalb sind Events ja Properties. Man kann sie dann während der Laufzeit dann Setzen.
[Edit: Jetzt verstehe ich, was du meinst:
panel.OnClick :=myonclick; und Methode der Klasse CStunde.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Panel mit 4 Labels von TPanel ableiten

  Alt 1. Mär 2007, 11:07
Ok, jetzt habe ich es verstanden.

Vielen Dank für deine Hilfe




Für die den Thread später lesen:

Delphi-Quellcode:
CStunde = class(Tobject)
 public
 Panel: TPanel;
 Constructor Create(t,l,h,w: integer; form: TForm);
end;
Delphi-Quellcode:
Constructor CStunde.create(t,l,h,w: integer; Form: TForm);
begin
Panel:= TPanel.Create(nil);

 with panel do
  begin
  Parent:= Form;
  Top:= t;
  ...
  end;

 end;
end;
Im Aufrufenen Formualar:
Delphi-Quellcode:
var
  Form1: TForm;
  sp: CStunde;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
sp := Cstunde.Create(50,50,120,200,Form1);
sp.Panel.OnClick:= myclick;
end;
Delphi-Quellcode:
Procedure TForm1.MyClick(Sender: TObject);
begin
showmessage('öööööö');
end;
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  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 06:05 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