Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

Наследник от 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
1-1102739411
Eugeni
2004-12-11 07:30
2004.12.26
TListBox


3-1101725313
KSergey
2004-11-29 13:48
2004.12.26
Переустановить MDAC


3-1101967627
Death
2004-12-02 09:07
2004.12.26
Програмное изменение занчений полей


14-1101973399
gn
2004-12-02 10:43
2004.12.26
Взломать за 240 секунд


1-1102587491
Aleks
2004-12-09 13:18
2004.12.26
как передать фокус и узнать код символа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский