Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi HangMan Button Interface (https://www.delphipraxis.net/88877-hangman-button-interface.html)

Chaosente 22. Mär 2007 13:34


HangMan Button Interface
 
Hi ich hab mir gedacht ob es evtl möglcih ist ne Klasse zu schreiben, die einem für jeden Buchstaben nen Button erstellt, dessen Erreignisse sie dann auch verwalten kann...

Hatte mir überlegt, es wär evtl am einfachsten ne Grouptbox als überklasse zu benutzen, nur komme ich jetzt nciht weiter

Tormentor32 22. Mär 2007 13:40

Re: HangMan Button Interface
 
Schildere mal deine genauen Probleme, mit "Ich komme nicht weiter" kommt hier niemand weiter :wink: :gruebel:

Chaosente 22. Mär 2007 13:45

Re: HangMan Button Interface
 
ich brauch nen kleienn denk anstoß wie ich die buttons create und nachher trotzdem verwalten kann bzw wo ich das tun muss. also eigenltich ist mir nicht klar wie ich die ganzen buttons erstellen kann ohne tausende von globalen variablen als folge zu haben, ich steh einfach aufm schlauch...

ste_ett 22. Mär 2007 13:55

Re: HangMan Button Interface
 
Zitat:

Zitat von Chaosente
ich brauch nen kleienn denk anstoß wie ich die buttons create und nachher trotzdem verwalten kann bzw wo ich das tun muss. also eigenltich ist mir nicht klar wie ich die ganzen buttons erstellen kann ohne tausende von globalen variablen als folge zu haben, ich steh einfach aufm schlauch...

dynamischer Array von TButton oder manuell suchen: :)

Delphi-Quellcode:
  FindControl()
  TForm.Controls[]

Tormentor32 22. Mär 2007 13:58

Re: HangMan Button Interface
 
Also ich würde die Buttons in einem Array verwalten. Du könntest zum Beispiel eine Variable
Delphi-Quellcode:
Buttons: array['a'..'z'] of TButton;
anlegen. Das müsste eigentlich funktionieren. Und sonst schau mal hier im Forum nach TList oder so :gruebel:

Chaosente 22. Mär 2007 14:13

Re: HangMan Button Interface
 
kann ich danne vtl auch alle onklick ereignisse der buttons in einer procedure verwalten?

Chaosente 22. Mär 2007 15:14

Re: HangMan Button Interface
 
ok soweit so gut, die buttons hab ich erfolgreich erstellt, nun aber mein nächstes problem, ich will ncith für jeden der buttons ne OnKLick schreiben, kann man das irgendwie in einer Procedure bewältigen?

hier noch mal mein Code:
Delphi-Quellcode:
type
  THangManWordInterface = class
  private

  public
  Buttons: array[0..25] of TButton;
  constructor Create(top,left:integer; owner: TComponent);
  end;
[...]
Delphi-Quellcode:
constructor THangManWordInterface.Create(top,left: integer; owner: TComponent);
var i:integer; abc: string;
begin
  abc:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  for i:=0 to 25 do begin
  Buttons[i]:=TButton.Create(owner);
  Buttons[i].Parent:=TWincontrol(owner);
  Buttons[i].left:=i*20+left;
  Buttons[i].Top:=top;
  Buttons[i].Width:=20;
  Buttons[i].Height:=20;
  Buttons[i].Caption:=abc[i+1];
  end;
end;

Tormentor32 22. Mär 2007 15:18

Re: HangMan Button Interface
 
Schreib einfach eine Prozedur, die die fleichen Parameter hat, wie die Normale ButtonClick Prozedur.

Dann kannst du diese Prozedur jedem Button zuweisen. Über den Sender Parameter weißt du, welcher Button gedrückt wurde.

Chaosente 22. Mär 2007 15:58

Re: HangMan Button Interface
 
Bin schon lange am rumprobieren damit, aber ich kriegs nicht geschissen, das es funktioniert... der code ist ja da oben... in der OnKlick der gesammten buttons soll dann die cpation ausgelsen werden, aber er übergibt mir nichts.

bitsetter 22. Mär 2007 19:23

Re: HangMan Button Interface
 
Hallo,

zumindest so funktioniert es:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure HangKlick(Sender: TObject);
  public
    { Public declarations }
  end;

type
  THangManWordInterface = class
  private
  public
    Buttons: array[0..25] of TButton;
    constructor Create(top,left:integer; owner: TComponent);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor THangManWordInterface.Create(top,left: integer; owner: TComponent);
var i:integer; abc: string;
begin
  abc:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  for i:=0 to 25 do begin
  Buttons[i]:=TButton.Create(owner);
  Buttons[i].Parent:=TWincontrol(owner);
  Buttons[i].left:=i*20+left;
  Buttons[i].Top:=top;
  Buttons[i].Width:=20;
  Buttons[i].Height:=20;
  Buttons[i].Caption:=abc[i+1];
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  HangMan: THangManWordInterface;
  i : integer;
begin
  HangMan:= THangManWordInterface.Create(10, 10, self);
  for i:= low(HangMan.Buttons) to high(HangMan.Buttons) do
    HangMan.Buttons[i].OnClick:= HangKlick;
end;

procedure TForm1.HangKlick(Sender: TObject);
begin
  if Sender is TButton then
    Caption:= TButton(Sender).Caption
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr.
Seite 1 von 2  1 2      

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