Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kontrolle über Unterklasse OnClick Ereigniss (https://www.delphipraxis.net/111783-kontrolle-ueber-unterklasse-onclick-ereigniss.html)

OSIcreate 9. Apr 2008 08:41


Kontrolle über Unterklasse OnClick Ereigniss
 
Moin

Ich hab da ma ne Frage und zwar wie kann ein Objekt in meim Fall ein TPanel in der Klasse TLangSwitcher feststellen das Objekte die auf im liegen angeklickt werden in meinem Fall ebenfalls ein Panel in der Klasse (TItems)

Erklärung zum Quellcode ich hab ne GrundKlasse TLangSwitcher ein Panel auf dem liegen mehere Objekte der Klasse TItems die aus einem Grundpanel zwei Labels und einer Checkbox besteht Panels

Das Problem ist dass immer nur ein Objekt von TItem makiert sein darf. Aber um die Makierung aufheben zu können muss meine Grundklasse TLangSwitcher mitkriegen wenn das OnClickereigniss der TItemklasse ausgelöst wird.


hier mein quellcode:


Delphi-Quellcode:
unit USwitcher;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls,IniFiles, ULanguage, CheckLst;

type
  TItems = class
  private
  public
    panb : TPanel;
    chk : TCheckBox;
    lbl : TLabel;
    text : TLabel;
    constructor create(pan : TPanel; Y : integer; Capt,txt : string; che : boolean);
    procedure itemOnClick(Sender : TObject);
  end;


  TLangSwitcher = class(TPanel)
  private
    items : TListBox;
    itList : Tlist;
  public
    procedure setitems(ID : string);
    procedure createList;
    function getList : TListBox;  
  end;


implementation


//******************************************************************************
//                              Items
constructor TItems.create(pan : TPanel; Y : integer; Capt,txt : string; che : boolean);
begin
  panb := TPanel.create(pan);
  with panb do
  begin
    Parent := pan;
    Top := Y;
    Left := 0;
    Height := 15;
    Width := pan.Width-1;
    BorderStyle := bsNone;
    Color := clWhite;
    OnClick := itemOnClick;
    if che = true then   Color := clBackground;
  end;


  chk := TCheckBox.Create(panb);
  with chk do
  begin
    parent := panb;
    Height := 9;
    Width := 9;
    Left := 2;
    Top := 2;
    Caption := '';
    Font.Color := clBackground;
    Font.Size := 8;
    Checked := che;
    if che = true then Color := clBackground;
    OnClick := itemOnClick;
  end;

  lbl := TLabel.Create(panb);
  with lbl do
  begin
    parent := panb;
    Height := 12;
    Width := 12;
    Top := 0;
    Left := 15;
    AutoSize := false;
    Alignment := taCenter;
    Color := clBlack;
    Font.Color := clBackground;
    Font.Name := 'Arial';
    Font.Size := 6;
    Caption := capt;
    OnClick := itemOnClick;
  end;

  text := TLabel.Create(panb);
  with text do
  begin
    parent := panb;
    Height := 15;
    Top := 0;
    Left := 27;
    Width := pan.Width-Left;  
    AutoSize := false;
    Font.Color := clBlack;
    Font.Name := 'Arial';
    Font.Size := 8;
    Caption := txt;
    OnClick := itemOnClick;
  end;    

end;


procedure TItems.itemOnClick(Sender : TObject);
begin
  if panb.Color = clBackground then
  begin
   chk.Color := clWhite;
   chk.Checked := false;
   panb.Color := clWhite;
  end
  else
  begin
    chk.Color := clBackground;
    chk.Checked := true;
    panb.Color := clBackground;
  end;
end;

//******************************************************************************




//******************************************************************************
//                             Switcher
procedure TLangSwitcher.createList;
begin
  items := TListBox.Create(self);
  items.Parent := self;
  items.Visible := false;

  itList := TList.Create;
end;

procedure TLangSwitcher.setitems(ID : string);
var i,posy : integer;
begin
  posy := 1;
  for i := 0 to items.Items.Count-1 do
  begin
    if copy(items.Items[i],1,2) = ID then itList.Add(TItems.Create(self,posy,copy(items.Items[i],1,2),copy(items.Items[i],3,Length(items.Items[i])),true))
    else itList.Add(TItems.Create(self,posy,copy(items.Items[i],1,2),copy(items.Items[i],3,Length(items.Items[i])),false));
    Height := Height + 14;
    Top := Top - 14;
    posy := posy + 14;
  end;

  self.Height := self.Height + 4;    
end;

//---------------------- Getter ------------------------------------------------
function TLangSwitcher.getList : TListBox;
begin
  result := items;
end;

//******************************************************************************






end.

Bedanke mich jetzt schon für eure Antworten

mfg

mkinzler 9. Apr 2008 09:08

Re: Kontrolle über Unterklasse OnClick Ereigniss
 
Da du ja schon eine gemeinsame Methode für den Event (itemOnClick) hast, würde ich das dort abprüfen (über Sender)

OSIcreate 9. Apr 2008 09:31

Re: Kontrolle über Unterklasse OnClick Ereigniss
 
Cool thx an des hab ich grad net gedacht jetzt funktionierts


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