Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Taster-Programm ---> brauche Hilfe!! (https://www.delphipraxis.net/142465-taster-programm-brauche-hilfe.html)

KingMax 28. Okt 2009 17:39


Taster-Programm ---> brauche Hilfe!!
 
Guten Tag,
ich muss ein Programm programmieren, indem per Button-Klick jedemenge BitButtons auf der Form in zufälliger Position erscheinen. Jeder Dieser Button hat die Caption "Aus" und sollte, sobald man mit der maus draufklickt, auf "an" springen. Lässt man die Maustaste wieder los, wird es wieder "aus". Also nur "an" wenn die maus auf dem Button gedrückt ist. Dazu benutze ich 3 Units, deren Quelltext unten steht.

Ich bin jetzt soweit, dass die Buttons zufällig erstellt werden, jedoch nicht auf "Aus" wechseln, wenn ich darauf klicke. Ich vermute dass ich einen Button implementieren muss, der dafür sorgt dass dem so ist. Allerdings weis ich weder wo noch wie ich diesen einbinden soll.

MFG
Max

Delphi-Quellcode:
unit Panel3;

interface

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

type
  TForm1 = class(TForm)
    BtGruenPanel: TButton;
    procedure BtGruenPanelClick(Sender: TObject);
  private
    { Private-Deklarationen }


  public
    { Public-Deklarationen }
  end;


type
TBuntTaster = Class (TBuntPanel)
protected

procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X,Y: Integer);override;
procedure MouseUp (Button: TMouseButton; Shift: TShiftState; X,Y: Integer);override;
end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtGruenPanelClick(Sender: TObject);
var GruenPanel:   TGruenPanel;BuntPanel:TBuntpanel;
begin
GruenPanel:=TGruenPanel.Create(Form1);
GruenPanel.Parent:=Form1;
GruenPanel.Left:=200;
GruenPanel.Height:=50;
BuntPanel:=TBuntPanel.Create(Form1);
BuntPanel.Parent:=Form1;
BuntPanel.BringToFront;
end;

procedure TBuntTaster.MouseDown (Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
BevelInner := bvLowered;
Caption := 'an';
inherited MouseDown (Button, Shift, X, Y);
end;

procedure TBuntTaster.MouseUp (Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
BevelInner := bvRaised;
Caption := 'aus';
inherited MouseUp (Button, Shift, X, Y);
end;



 end.
Delphi-Quellcode:
unit mTaster1;

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




implementation

end.
Delphi-Quellcode:
unit mPanelDemo;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,ExtCtrls, Buttons;
type TGruenPanel = class (TBitBtn)

public
        constructor Create (AOwner:TComponent);virtual;
        end;


        type TBuntPanel = class (TBitBtn)
        public
        constructor Create (AOwner:TComponent);virtual;
        end;





implementation

constructor TGruenPanel.Create (AOwner:TComponent);
begin
        inherited Create (AOwner);
        Color:=clGreen;
        BorderWidth:=1;
        BevelOuter:=bvNone;
        BevelInner:=bvRaised;
        BevelWidth:=4;
end;

constructor TBuntPanel.Create (AOwner:TComponent);
begin
        inherited Create (AOwner);
        randomize;
        Color:=RGB(Random(256), Random(256), Random(256));
        BorderWidth:=1;
        BevelOuter:=bvNone;
        BevelInner:=bvRaised;
        BevelWidth:=4;
        left:=random(200);
        Width:=random(300);
        height:=random (200);
        top:=random(450);
        Caption := 'aus';
end;
end.

alleinherrscher 28. Okt 2009 19:01

Re: Taster-Programm ---> brauche Hilfe!!
 
Oh man, das ist ja...wie beschreibt man das... also irgendwie blick ich nicht durch. Hast du den Code selber geschrieben oder ist der von irgendeinem (Achtung: Wortwitz) Leerkörper?


Die Beizeichnungen sind auch furchtbar gewählt. Wie kann man einer von einem BitBtn Abgeleiteten Komponente den Namen "Gruenpanel" geben? Da denk ich, die Komponente wäre von einem Panel abgeleitet...

Hm also wenn ich deinen Code richtig verstanden habe, müsste er weitestgehen stimmen, allerdings erstellt du einfach nie einen TBuntTaster, sondern nur die komischen Gruen- und BuntPanels. Die Möglichkeit, die Caption beim Mousedown und Mouseup zu ändern hat aber nur der TBuntTaster, welchen du gar nicht verwendest.

Ich würde also den Code von BtGruenPanelClick ändern:

Delphi-Quellcode:
procedure TForm1.BtGruenPanelClick(Sender: TObject);
var GruenPanel: TGruenPanel;
    MyBuntTaster: TBuntTaster;
begin

  GruenPanel:=TGruenPanel.Create(Form1);
  GruenPanel.Parent:=Form1;
  GruenPanel.Left:=200;
  GruenPanel.Height:=50;
 
  MyBuntTaster:=TBuntTaster.Create(Form1);
  MyBuntTaster.Parent:=Form1;
  MyBuntTaster.BringToFront;

end;

Grüße

KingMax 28. Okt 2009 20:15

Re: Taster-Programm ---> brauche Hilfe!!
 
ja vielen vielen dank erstnal für die schnelle antwort! Ich probier es gleich ma aus. Das mit den GruenPanels liegt ganz einfach daran, dass das vorherige programm per knopfdruck ein grünes panel erstellen sollte, und jede menge zufallspanel (BuntPanel). Dieses Programm habe ich als Grundlage genommen, und um fehler zu vermeiden die Namen beibehalten. Also nochmals danke, ich werde es gleich mal versuchen!


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