Mam problem z wyświetlaniem komponentów. Tworzę na formie 3 duże, czerwone panele, w tym samym miejscu, z których tylko jeden ma być widoczny w danym momencie, przycisk nawigacyjny który zmienia widoczny Panel czerwony, oraz dodatkowy przycisk który wyświetla dodatkowy Panel niebieski, ukryty przy tworzeniu formy. Dodatkowy Panel niebieski jest umiejscowiony tak, że duża jego część nachodzi na 3 wcześniejsze czerwone Panele. W ten sposób po naciśnięciu przycisku który ma go wyświetlić, Panel niebieski się pojawia, jednak przy kolejnej próbie jego wyświetlenia, pojawia się tylko mały wycinek, który nie leży bezpośrednio na 3 czerwonych Panelach, tak jakby one go zasłaniały. Co zrobić, aby pojawiał się w całości? Poniżej kod:
unit Unit1;
{$mode delphi}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls;
type
Komponent = class(ExtCtrls.TPanel)
public
end;
{ TForm1 }
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Exit: TButton;
Przycisk: TButton;
PrzyciskNawigacji: TButton;
PanelRozwijany: TPanel;
Panele: Array[0..3] of TPanel;
AktywnyPanel: Integer;
procedure PrzyciskKlik(Sender: TObject);
procedure DalejKlik(Sender: TObject);
procedure ExitKlik(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.ExitKlik(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.PrzyciskKlik(Sender: TObject);
begin
if PanelRozwijany.Visible then
PanelRozwijany.Hide
else
PanelRozwijany.Show;
end;
procedure TForm1.DalejKlik(Sender: TObject);
var
I: Integer;
begin
if AktywnyPanel = High(Panele) then
AktywnyPanel := Low(Panele)
else
Inc(AktywnyPanel);
for I := Low(Panele) to High(Panele) do
Panele[I].Hide;
Panele[AktywnyPanel].Show;
if PanelRozwijany.Visible then
PanelRozwijany.Hide;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
if PanelRozwijany.Visible then
PanelRozwijany.Hide
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
AktywnyPanel := 0;
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.Height;
BorderStyle := bsNone;
Przycisk := TButton.Create(Self);
with Przycisk do
begin
Parent := Self;
Left := 20;
Top := 20;
Width := 180;
Height := 30;
Caption := 'Przycisk';
OnClick := PrzyciskKlik;
end;
Exit := TButton.Create(Self);
with Exit do
begin
Parent := Self;
Left := Self.Width - 200;
Top := 20;
Width := 180;
Height := 30;
Caption := 'Zakończ';
OnClick := ExitKlik;
end;
PrzyciskNawigacji := TButton.Create(Self);
with PrzyciskNawigacji do
begin
Parent := Self;
Left := 200;
Top := 20;
Width := 30;
Height := 30;
Caption := '>';
OnClick := DalejKlik;
end;
PanelRozwijany := TPanel.Create(Self);
with PanelRozwijany do
begin
Parent := Self;
Left := 20;
Top := 50;
Width := 180;
Height := 180;
Color := clRed;
Hide;
end;
for I := Low(Panele) to High(Panele) do
begin
Panele[I] := TPanel.Create(Self);
with Panele[I] do
begin
Parent := Self;
Left := 0;
Top := 70;
Width := Self.Width;
Height := Self.Height - 70;
Color := clBlue;
Hide;
Caption := 'Panel ' + IntToStr(I);
end;
end;
Panele[AktywnyPanel].Show;
end;
end.