Zamykanie zakładki na PageControl

0

Mam taki problem: Włożyłem na formę PageControl'a. Za zakładkach są Buttony które mają zamykać aktywną zakładkę. Po naciśnięciu Buttona zakładka znika, ale wywala błąd. Zamykam komendą Destroy. Dziwne bo jeśli użyłem PopUp'a i tam komendę dokładnie taką samą jak dla buttona, to wszystko działa jak trzeba.
Nie czaję co może

0

Niby wszystko wydaje się być ok, mi nie wyskakuje błąd, gdy zrobię coś takiego. Spróbuj może jeszcze Free zamiast Destroy.

0
Pociech napisał(a)

Mam taki problem: Włożyłem na formę PageControl'a. Za zakładkach są Buttony które mają zamykać aktywną zakładkę. Po naciśnięciu Buttona zakładka znika, ale wywala błąd. Zamykam komendą Destroy. Dziwne bo jeśli użyłem PopUp'a i tam komendę dokładnie taką samą jak dla buttona, to wszystko działa jak trzeba.
Nie czaję co może

Moze nie może zrobić Destroya w buttonie, bo ten button jest na zakładce, którą chcesz zamknąć ;P

0
Red Hot napisał(a)

Moze nie może zrobić Destroya w buttonie, bo ten button jest na zakładce, którą chcesz zamknąć ;P

...a nawet na pewno :). Kiedyś ktoś też miał podobny problem (ten ktoś ma tu nick Mr.Hex :P ) i rozwiązaliśmy my to przez użycie komunikatu wysyłanego przez button do okna - obsługa tego komunikatu zamykała odpowiedną zakładkę.

0
Red Hot napisał(a)

Moze nie może zrobić Destroya w buttonie, bo ten button jest na zakładce, którą chcesz zamknąć ;P

To nie ma znaczenia, robiłem u siebie tak samo.

0

Program wygląda mniej więcej tak:

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.PageClose(sender: TObject);
begin
  PageControl1.ActivePage.Destroy;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Zakladka: TTabSheet;
    Guzik: TButton;
begin
  Zakladka:=TTabSheet.Create(self);
  Zakladka.PageControl:=PageControl1;
  Zakladka.Caption:=IntToStr(Random(2000));

  Guzik:=TButton.Create(self);
  Guzik.Parent:=Zakladka;
  Guzik.Caption:='Zamknij';
  Guzik.OnClick:=PageClose;
end;

end.

I wywala ABSTRACT ERROR.

0

U mnie dziła bez zarzutu. Błąd musi być gdzie indziej.

0

Jeśli zrobię sobie kilka zakadładek(np. 5) to przy zamykaniu pierwszej nic się nie dzieje, ale kiedy zamykam kolejne to wtedy jest ten błąd. A właściwie co oznacza Abstract Error?

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