Главная страница
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.027 c
1-1102940836
Wolffgang
2004-12-13 15:27
2004.12.26
опознание одинарной кавычки


14-1102425219
Dmitriy O.
2004-12-07 16:13
2004.12.26
У кого диска разбит на несколько ?


14-1102083278
Igor_thief
2004-12-03 17:14
2004.12.26
Delphi 2005 и RAVE


14-1102134213
Думкин
2004-12-04 07:23
2004.12.26
С днем рождения! 4 декабря


14-1102182152
ArMellon
2004-12-04 20:42
2004.12.26
У меня стоит Apache , как виртуальным хостам