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
Niby wszystko wydaje się być ok, mi nie wyskakuje błąd, gdy zrobię coś takiego. Spróbuj może jeszcze Free zamiast Destroy.
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
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ę.
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.
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.
U mnie dziła bez zarzutu. Błąd musi być gdzie indziej.
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?