Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание компонентов в run-time? [D6]


yusla ©   (2005-06-28 09:48:00) 

помогите разобраться пожайлуста,
есть код:
tForm.Create(self).Name := 'login';
with tForm(FindComponent('login')) do
 begin
  Position := poDesktopCenter; BorderStyle := bsDialog;
  Height := 100; Width := 200;
 end;
tEdit.Create(self).Name := 'useredit';
with tEdit(FindComponent('useredit')) do
  begin
   Parent := tForm(FindComponent('login'));
   Left := 10; Top := 10;
  end;
tForm(FindComponent('login')).ShowModal;

почему то Edit не появляется на форме login 8(


-=XP=-   (2005-06-28 12:00:00) [1]

А! Семен Семеныч!

:-)


Ega23   (2005-06-28 11:57:00) [2]

Дык не просто с экрана, а И с экрана, И файл зачистить.


-=XP=-   (2005-06-28 11:49:00) [3]

Ну да ладно. Не суть важно.
Хотя, покоя не дает вторая строка:

TMemo(Controls[i]). Clear;
TMemo(Controls[i]). Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'SQLLog.log');


Буду считать, что это рабочая версия. ;-)


evvcom   (2005-06-28 11:48:00) [4]

Судя по
> function ShowSQLDebugMessages:Boolean;
здесь нет Self, и в
> procedure BtnClearClick(Sender:TObject);
тоже нет Self, а в TNotifyEvent передается 2 параметра: неявно Self и явно Sender. Кроме того BtnClearClick является процедурой внутри функции, а там происходят некие фокусы вокруг ebp. Сомневаюсь, что такие манипуляции будут корректны даже при использовании function TMyClass.ShowSQLDebugMessages:Boolean;
Надо будет посмотреть на досуге.


Ega23   (2005-06-28 11:39:00) [5]

Ну как же? Это "реакция" на нажатие кнопки "Стереть".
Просто функция содержится в библиотеке, там ей подобных - штук 20. ErrorLog вывести, параметры соединения с БД посмотреть, и т.п.


-=XP=-   (2005-06-28 11:32:00) [6]

Не спорю. Писалось очень давно. Сейчас сделал бы совсем по другому.

Нет. Я не совсем про это. Для чего это?


Ega23   (2005-06-28 11:26:00) [7]

Боюсь, гораздо ниже... :-(

Не спорю. Писалось очень давно. Сейчас сделал бы совсем по другому.


-=XP=-   (2005-06-28 10:46:00) [8]

Боюсь, гораздо ниже... :-(


Ega23   (2005-06-28 10:42:00) [9]

Извините, это что?

Это? Это КАРИЕС!!!!   :-))))))))


-=XP=-   (2005-06-28 10:41:00) [10]

      procedure BtnClearClick(Sender:TObject);
      var
       i:Integer;
      begin
       if (Sender is TForm) then
        begin
         With TForm(Sender) do
          begin
           for i:=0 to ControlCount-1 do
            if (Controls[i] is TMemo) then
             if UpperCase(TMemo(Controls[i]).Name)=UpperCase('memSQLLogMonitor') then
              begin
               TMemo(Controls[i]).Clear;
               TMemo(Controls[i]).Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'SQLLog.log');
               Break;
              end;
          end;//With TForm(Sender) do
        end;//if (Sender is TForm) then
      end;//procedure BtnClearClick(


Извините, это что?


Ega23   (2005-06-28 10:26:00) [11]

Это чего это ты такое намутил?

Да текст егоный впопыхах правил. Вот:



function ShowSQLDebugMessages:Boolean;
       procedure BtnClearClick(Sender:TObject);
       var
        i:Integer;
       begin
        if (Sender is TForm) then
         begin
          With TForm(Sender) do
           begin
            for i:=0 to ControlCount-1 do
             if (Controls[i] is TMemo) then
              if UpperCase(TMemo(Controls[i]).Name)=UpperCase('memSQLLogMonitor') then
               begin
                TMemo(Controls[i]).Clear;
                TMemo(Controls[i]).Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'SQLLog.log');
                Break;
               end;
           end;//With TForm(Sender) do
         end;//if (Sender is TForm) then
       end;//procedure BtnClearClick(
var
aForm:TForm;
OnClearClick:TMethod;
List:TStringList;
i:Integer;
begin
Result:=False;
try
 Application.CreateForm(TForm, aForm);
 try
  With aForm do
   begin
    Caption:='SQL Transaction Log';
    BorderStyle:=bsSingle;
    Height:=500;
    Width:=750;
    Position:=poScreenCenter;
   end;
  With TMemo.Create(aForm) do
   begin
    Parent:=aForm;
    Name:='memSQLLogMonitor';
    Align:=alTop;
    ScrollBars:=ssBoth;
    Height:=440;
    Clear;
    if FileExists(ExtractFilePath(Application.ExeName)+'SQLLog.log') then
     begin
      List:=TStringList.Create;
      List.LoadFromFile(ExtractFilePath(Application.ExeName)+'SQLLog.log');
      for i:=List.Count-1 downto 0 do Lines.Add(List.Strings[i]);
      List.Free;
     end;
   end;
  With TButton.Create(aForm) do
   begin
    Parent:=aForm;
    Cancel:=True;
    Height:=25;
    Width:=100;
    Font.Size:=10;
    Top:=aForm.ClientHeight-30;
    Left:=aForm.ClientWidth-110;
    Caption:='Çàêðûòü';
    ModalResult:=mrOK;
   end;
  With TButton.Create(aForm) do
   begin
    Parent:=aForm;
    Height:=25;
    Width:=100;
    Font.Size:=10;
    Top:=aForm.ClientHeight-30;
    Left:=aForm.ClientWidth-220;
    Caption:='Î÷èñòèòü';
    OnClearClick.Code:=@BtnClearClick;
    OnClearClick.Data:=aForm;
    OnClick:=TNotifyEvent(OnClearClick);
   end;
  aForm.ShowModal;
 finally
  aForm.Free;
 end;
except on E:Exception do
 raise Exception.Create('ShowSQLDebugMessages '+E.Message);
end;
end;


evvcom   (2005-06-28 10:23:00) [12]


> aForm:=tForm.Create(self).Name := 'login';

Это чего это ты такое намутил?


Ega23   (2005-06-28 10:00:00) [13]


var
aForm:TForm;
begin
aForm:=tForm.Create(self).Name := 'login';
with aForm do
begin
 Position := poDesktopCenter; BorderStyle := bsDialog;
 Height := 100; Width := 200;
end;
tEdit.Create( aForm).Name := 'useredit';
with tEdit(FindComponent('useredit')) do
 begin
  Parent := aForm;
  Left := 10; Top := 10;
 end;
aForm.ShowModal;

.....


evvcom   (2005-06-28 09:57:00) [14]

Мрак. Все через ... сделано.

var Form: TForm;

...
Form := TForm.Create(Application);
Form.Name := 'login'; // Хотя это необязательно вовсе
Form.Position := poDesktopCenter;
Form.SetBounds(Left, Top, 200, 100); // Вместо отдельных присваиваний Height и Width


Наверх

Титульная страница Поиск, карта сайта Написать письмо