Inna procedura po kliknieciu w button

0

Witam, mam problem jak zrobic by za kazdym razem jak klikne w button byla wykonywana wczesniej ustalona sekwencja procedur. Nie wiem czy zrozumieiscie ale chodzi o to by gdy klikne raz w button pojawial mi sie panel1 (panel1.visible:=true) gdy klikne po raz drugi w ten sam button pojawi sie panel2 itd...

domyslam sie ze trzeba uzyc case ale nie zabardzo wiem jak <wstydnis>

0

  var
     Panel : byte; // zmienna globalna

  implementation
   
  procedure Button1OnClick (Sender :Object);
  begin
    TPanel(FindComponent('Panel' + IntTOStr(Panel))).visible := false;
    Inc(Panel);
    TPanel(FindComponent('Panel' + IntTOStr(Panel))).visible := true;
  end;

0

dzieki ale co zrobic gdy mam rozne panele o roznych nazwach ? nie mozna tego zrobic na case ?

0

A nie mozesz sobie pozmieniać nazw Paneli tak, żeby się nazywały PanelX, gfzie X to numer?

0

var
Form1: TForm1;
Panel : byte = 0;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
Inc(Panel);
if Panel <= 8) and then // musisz ustalic od ilu do ilu przyporzadkowane masz
// indexy w panelach
TPanel(Components[Panel]).Caption := 'cyk';
end;

0

niestety wywala blad:

if c1.Checked then    begin
  begin
    TPanel(FindComponent('instalacja' + IntTOStr(Panel))).visible := true;
    Inc(Panel);
    TPanel(FindComponent('instalacja' + IntTOStr(Panel))).visible := true;
  end;

 end;

po kliknieciu w button wywala access violation...

ps panele sa jeden na drugim, wszystkie z visible false

0

Artur, kiedys jakis user napisal: jak skakac pomiedzy TEditami za pomoca strzalek na klawiaturze. Napisalem mu kodzik, ktory bazowal na linijce:

 TEdit(FindComponent('Edit' + IntStr(krok))).SetFocus;

To on mi napial, czy nie da sie inaczej bo ma w editach inne nazwy. No to ja odpisalem czy nie moze zmienic tych nazw, a on na to ze ma 200 editow :|
Do dzisiaj sie glowie do czego mu az 200 editow [browar]

0

a na caseach sie nie da :>

0

Drivex co ty z tymi caseachmi :) jesli chcesz, aby po kliknieci na button wyswietlil ci sie nastepny panel no to operacja case jest tu naprawde zbedna, przemysl to dobrze, podalem ci dwie poprawne odpowiedzi :/

0

wiem ale na jednej mi wywala blad a na drugiej cos nie tak bo stoi po kliknieciu w buton mysle ze indexy sa poprzestawiane a nie widzi mi sie designownie od nowa.... moglbys mi napisac na case? : ) prosze

0

W obu przypadkach zle ci to dziala bo pewnie masz zle zadeklarowana zmienna panel. Watpie aby twoj pierwszy Panel mial index 0.

... na casach wygladalo by to tak:

    Inc(Panel);
    case Panel of 
      1: panel1.visible := true;
      2: panel2.visible := true;
     {... itd}
     end;
 
0

i dziala idealnie :D Dziekuje :Ddd

1 użytkowników online, w tym zalogowanych: 0, gości: 1