AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kontrolle über Unterklasse OnClick Ereigniss
Thema durchsuchen
Ansicht
Themen-Optionen

Kontrolle über Unterklasse OnClick Ereigniss

Ein Thema von OSIcreate · begonnen am 9. Apr 2008 · letzter Beitrag vom 9. Apr 2008
Antwort Antwort
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#1

Kontrolle über Unterklasse OnClick Ereigniss

  Alt 9. Apr 2008, 09:41
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Kontrolle über Unterklasse OnClick Ereigniss

  Alt 9. Apr 2008, 10:08
Da du ja schon eine gemeinsame Methode für den Event (itemOnClick) hast, würde ich das dort abprüfen (über Sender)
Markus Kinzler
  Mit Zitat antworten Zitat
OSIcreate

Registriert seit: 25. Mär 2008
16 Beiträge
 
#3

Re: Kontrolle über Unterklasse OnClick Ereigniss

  Alt 9. Apr 2008, 10:31
Cool thx an des hab ich grad net gedacht jetzt funktionierts
  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 03:16 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