Autor Beitrag
bossi
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 07.09.03 16:44 
hi zusammen,

bin das erste mal mit delphi zu gange und pascall hatte ich auch noch nicht. also ich habe mal ein kleines fenter mit 1 button und 1 panel. klick ich nun auf den button, soll das panel verstekct oder angezeigt werden. aber das haut nicht hin, muss an meiner variable liegen :lol:

hier mal ein teil von der procedure buttonclick :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
i := 0;
  if i = 0 then
  Panel1.Visible := false;
  i := 1;

  if i = 1 then
  Panel1.Visible := true;
  i := 0;

end;

also (i) ist nun (0) ? somt soll bei der if-abfrage das panel versteckt werden.

bye
bossi

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 07.09.03 16:53 
mach es so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if panel1.visible then
panel1.visible := false
else
panel1.visible := true;


zu deinem code:
du hast hinter deinem then kein begin. also wird nur die nächste zeile nach dem then ausgeführt, wenn die if anweisung gecheckt wird.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 07.09.03 16:54 
Hallo und herzlich Willkommen im Forum!

Zuerst einmal, weshalb es so nicht klappt:
(1) i ist lokal deklariert. Sobald die Prozedur beendet ist, gehen alle Informationen über i verloren. Wird also der Button das nächste mal betätigt, gibt es keinerlei Information darüber, welchen Wert i beim letzen Klick hatte
(2) Selbst wenn diese Information vorhanden wäre, würdest Du sie ja mit i:=0 (ganz am Anfang) überschreiben.

So, und wie macht man es nun? So:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Visible := not Panel1.Visible;
end;

Panel1.Visible ist ein Boolean und mit "not" kann ich den Wert eines Boolean (also Wahrheitswertes) umkehren. Sozusagen das "-1 mal" der Wahrheitswerte. ;-) Und genau das ist es ja. Wenn sichtbar, soll es nicht sichtbar sein; wenn nicht sichtbar, soll es sichtbar (= nicht nicht sichtbar) sein.

Wenn Du es jedoch mit Deinen Variablen machen willst, dann solltest Du Dich mal mit dem Unterschied zwischen globalen und lokalen Variablen beschäftigen.

Hoffe, geholfen zu haben!

MfG
Peter

P.S.: Könntest Du demnächst statt den Code- die Delphi-Tags verwenden? Danke!

//edit: Matze war zwar schneller, aber dafür ist mein Code kürzer und mein Text länger! :mrgreen:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bossi Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 07.09.03 17:28 
hallo euch beiden,
schönen dank für eure vorschläge :D
das geht ja richtig schnell hier :shock: , das mit dem delphi-tags habe ich nicht so gesehen.
das mit dein tip @peter lustig haut ja supi hin, allerdings funzt das wohl nicht mehr wen ich 3 button und 3 panel habe.
klick ich auf button 1 versteck panel 2+3
klick ich auf button 2 versteck panel 1+3
klick ich auf button 3 versteck panel 1+2
dann muss ich wohl mit vareablen arbeiten oder ?

mfg
bossi
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 07.09.03 18:03 
Hallo!

Hm, das sind ja noch nicht so viele Panels. Da kann man das dann ganz einfach so lösen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.setPanel(index : Integer);
begin
  panel1.Visible := (index = 1);
  panel2.Visible := (index = 2);
  panel3.Visible := (index = 3);
end;

procedure TForm1.Button1Click(Sender : Tobject);
begin
  setPanel(1);
end;

procedure TForm1.Button2Click(Sender : Tobject);
begin
  setPanel(2);
end;

procedure TForm1.Button3Click(Sender : Tobject);
begin
  setPanel(3);
end;


Die Prozedur "setPanel" musst Du dann noch im Public-Bereich der Form-Deklaration eintragen. Die sollte dann hinterher so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure setPanel(index : INteger); //<--- da eintragen!!
    { Public-Deklarationen }
  end;


MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bossi Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 07.09.03 18:39 
hi peter,
habe es so gemacht und es kamm nur :
click button1 = panel 2+3 wech (ist OK)
click button2 = passiert nix :?:
click button3 = passiert nix :?:

dann sigst du es sind ja nur 3, es könnten aber ein paar mehr werden.
das ist jetzt nur so ein beispiel gewesen, was währe dann die andere möglichkeit :!:
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 07.09.03 18:42 
Hm, das wundert mich. :nixweiss: Bitte poste doch mal Deinen Code!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bossi Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 07.09.03 18:44 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure setPanel(index : INteger);
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.setPanel(index : Integer); 
begin 
  panel1.Visible := (index = 1);
  panel2.Visible := (index = 2);
  panel3.Visible := (index = 3); 
end;

procedure TForm1.Button1Click(Sender : Tobject);
begin
  setPanel(1);
end;

procedure TForm1.Button2Click(Sender : Tobject); 
begin 
  setPanel(2); 
end

procedure TForm1.Button3Click(Sender : Tobject); 
begin 
  setPanel(3); 
end;


end.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 07.09.03 20:03 
@peter: an die negation hab ich gar nicht gedacht !!! peinlich peinlich

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 07.09.03 23:20 
@matze: macht ja nichts.


@bossi: sind die OnClick-Ereignisse der Button2 und Button3 auch Button2Click und Button3Click zugeordnet? Oder hast Du den Code nur aus dem Forum in Dein Projekt kopiert?


MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
bossi Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mo 08.09.03 07:34 
moin moin,
ja habe ich nur rein kopiert :lol:
habe nun bei onclick die sache angegeben und siehe da, es fuzt wunderbar :D

danke für deine geduld :)

gruß
bossi
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 08.09.03 09:42 
bossi hat folgendes geschrieben:
danke für deine geduld
Gern geschehen. Dazu sind wir doch hier!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".