Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

Наследник от TCustomComboBox   Найти похожие ветки 

 
snake1977 ©   (2004-12-08 10:12) [0]

Здравствуйте! помогите понять в чем проблемма. Сделал компонент наследника от TCustomCombobox, добавив свойчтва и методы для хранения списка Items в ini файле. Все работает, но в DesignTime если закрыть приложение, выскакивает окно INIComboBox6 has no parent window.
Почему так происходит.
вот исходник компонента

 TINIComboBox = class(TCustomComboBox)
 private
   { Private declarations }
   fININame:String;
   fINISectionName:String;
   fList:TStringList;
 protected
   { Protected declarations }
   Procedure OnExitF(Sender:TObject);
 public
   { Public declarations }
   Constructor Create(AOwner:TComponent); override;
   Destructor Destroy; override;
   Procedure SaveList;
   Procedure LoadList;
 published
   { Published declarations }
   property ININame:String read fININame write fININame;
   property INISectionName:String read fINISectionName write fINISectionName;
   property Style; {Must be published before Items}
   property Anchors;
   property BiDiMode;
   .....
   property OnStartDock;
   property OnStartDrag;
   property Items; { Must be published after OnMeasureItem }

 end;

procedure Register;

implementation
Uses INIFiles;
procedure Register;
begin
 RegisterComponents("Standard", [TINIComboBox]);
end;

Constructor TINIComboBox.Create(AOwner:TComponent);
Begin
inherited Create(Aowner);
OnExit:=OnExitf;
Sorted:=True;
fList:=TStringList.Create;
End;

Procedure TINIComboBox.SaveList;
Var ini:TINIFile;
   i:Integer;
Begin
if fININame<>"" Then
 Begin
   if Pos(":",fININame)<=0 Then fININame:=ExtractFilePath(ParamStr(0))+fININame;
   ini:=TINIFile.Create(fININame);
   ini.EraseSection(fINISectionName);
   for i:=0 to fList.Count-1 do
    Begin
     ini.WriteString(INISectionName,IntToStr(i),fList[i]);
    End;
   ini.UpdateFile;
   ini.Free;
 End;
end;

Procedure TINIComboBox.LoadList;
Var ini:TINIFile;
   i:Integer;
   List:TStringList;
Begin
if fININame<>"" Then
 Begin
   Items.Clear;
   if Pos(":",fININame)<=0 Then fININame:=ExtractFilePath(ParamStr(0))+fININame;
   ini:=TINIFile.Create(fININame);
   List:=TStringList.Create;
   ini.ReadSectionValues(fINISectionName,List);
   for i:=0 to List.Count-1 do
    Begin
     fList.Append(List.Values[List.Names[i]]);
     Items.Append(List.Values[List.Names[i]]);
    End;
   ini.Free;
  List.Free;
 End;
end;

Destructor TINIComboBox.Destroy;
Begin
SaveList;
fList.Free;
Inherited;
End;

Procedure TINIComboBox.OnExitF(Sender:TObject);
Begin
if Items.IndexOf(Text)=-1 Then
 Begin
  Items.Append(Text);
  fList.Append(Text);
 End;
End;


 
Рамиль ©   (2004-12-08 10:36) [1]

snake1977 ©   (08.12.04 10:12)
DesignTime если закрыть приложение,

1. Э.. объясни, как закрыть приложение в Design Time?
2. Не работай с файлом в Design Time.
3.
>OnExit:=OnExitf; - не делай так. Перекрой метод диспетчиризации (DoExit)


 
snake1977 ©   (2004-12-08 10:49) [2]

>>1. Э.. объясни, как закрыть приложение в Design Time?
я имел ввиду что когда я нахожусь в дельфи и пытаюсь закрыть проект, то дельфя вот так вот ругается
>>2. Не работай с файлом в Design Time.
как не рабоать , ежели я делаю программу, ставлю на форму этот компонент
>>3.
>OnExit:=OnExitf; - не делай так. Перекрой метод диспетчиризации >(DoExit)

где он описан??
я не нашел его в исходниках TCustomComboBox  
:(


 
snake1977 ©   (2004-12-08 11:11) [3]

заработала!
но почему вызывалось событие onExit в режиме разработки.... непонял :(
чесслово
я всегда думал что эти события срабатывают только при непосредственно работе самой программы


 
Рамиль ©   (2004-12-08 11:15) [4]

snake1977 ©   (08.12.04 11:11) [3]
как не рабоать , ежели я делаю программу, ставлю на форму этот компонент

if not (csDesigning in ComponentState)
snake1977 ©   (08.12.04 11:11) [3]
где он описан??
я не нашел его в исходниках TCustomComboBox  

Не там искал, TWinControl, если не ошибаюсь, или что то близкое к нему.



Страницы: 1 вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
3-1101637166
GanibalLector
2004-11-28 13:19
2004.12.26
ОСТАТКИ товара


3-1101476166
Dimedrol
2004-11-26 16:36
2004.12.26
EhLib dropdown lookup list


3-1101694710
Пыч
2004-11-29 05:18
2004.12.26
TDBGridEh


1-1103013273
paule
2004-12-14 11:34
2004.12.26
перекодировка текста


11-1084432291
avakss
2004-05-13 11:11
2004.12.26
KOL+INDY