|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Нужна помощь, проблемы с TFrame
Создан компонент TActionFrame
Код:
TFrameAction = class(TFrame) ScrollBox1: TScrollBox; LabEdName: TLabeledEdit; LabedPath: TLabeledEdit; LabEdType: TLabeledEdit; LabEdSize: TLabeledEdit; LabEdDate: TLabeledEdit; BtnClear: TRzBitBtn; BtnExit: TRzBitBtn; StatBar: TStatusBar; LProc: TLabel; RzSepr1: TRzSeparator; procedure BtnClearClick(Sender: TObject); procedure BtnExitClick(Sender: TObject); protected {Protected declaration} FObjType : byte; FMainAction : byte; FParam :string; ... var FrameAction: TFrameAction; на главной форме имеет имя TFrameAction1 по нажатию клавиши исп. след. код Код:
procedure TFrameAction.BtnClearClick(Sender: TObject); var inifilename : string; begin BtnClear.Enabled := false; Cleaner := TCleaner.Create(FrameAction); inifilename := ExtractFileName(Application.ExeName); inifilename := ChangeFileExt(inifilename, '.ini'); Cleaner.LoadFromIni(inifilename); case ObjType of 1: Cleaner.ObjForClean := 1; 2: Cleaner.ObjForClean := 2; 3: Cleaner.ObjForClean := 3; end; S := FrameAction.Param; Cleaner.PathObjForClean.Add(FrameAction.Param); Cleaner.MainCleanFunc; FormMain.ShellListView.Refresh; end; проблема в строке Код:
Cleaner := TCleaner.Create(FrameAction); выдает FrameAction : nil TCleaner.Create выглядит следующим образом Код:
constructor TCleaner.Create(Form:TFrame); var pixNum:integer; begin FObjForClean:=0; FPathObjForClean:=TStringList.Create; Lab:= TLabel.Create(Form); with Lab do begin Parent:=Form; Caption:='0%'; Transparent:=true; Left:=678; Top:= 320; Font.name:= 'MS Sans Serif'; Font.Size:=8; Font.Color:=clBlack; end; ProgrBar:= TProgressBar.Create(Form); with ProgrBar do begin Parent:=Form; Width:=617; Height:=24; Left:=14; Top:=312; //Orientation:=TOrientation(orHorizontal); Position:=0; end; end; |
#2
|
|||
|
|||
Код:
procedure TFrameAction.BtnClearClick(Sender: TObject); ... begin ... Cleaner := TCleaner.Create(self); //<<==--!!!!!!!!!!!! ...... S := Self.Param; //<<==--!!!!!!!!!!!! Cleaner.PathObjForClean.Add(S); //<<==--!!!!!!!!!!!! ... |
#3
|
|||
|
|||
Нет, мне надо чтобы этот TCleaner при create создавал свои компоненты на Frame, все компилиться только вот ошибка "Error read of adress..", из-за того что при
Код:
Cleater : = TCleaner.create(ActionFrame) ActionFrame = nil пока еще не победил это ))) |
#4
|
||||
|
||||
Ну дык а где собственно вы его создаете этот FrameAction? Где вызов конструктора для него?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Вы вызываете TCleaner.Create из метода TFrameAction. В момент нажатия на кнопку BtnClear какой-то FrameAction( FrameAction1,FrameAction2 ...) уже существует. И внутри обработчика BtnClearClick именно он и является Self. Что я и советовал сделать в своём первом посте.
а код Код:
var FrameAction: TFrameAction; |