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

Вниз

Создание компонентов в run-time?   Найти похожие ветки 

 
yusla   (2005-06-28 09:48) [0]

помогите разобраться пожайлуста,
есть код:
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(


 
evvcom ©   (2005-06-28 09:57) [1]

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

var Form: TForm;

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


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


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 10:23) [3]


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

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


 
Ega23 ©   (2005-06-28 10:26) [4]

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

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



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;



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

      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:42) [6]

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

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


 
-=XP=- ©   (2005-06-28 10:46) [7]

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


 
Ega23 ©   (2005-06-28 11:26) [8]

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

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


 
-=XP=- ©   (2005-06-28 11:32) [9]

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

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


 
Ega23 ©   (2005-06-28 11:39) [10]

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


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

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


 
-=XP=- ©   (2005-06-28 11:49) [12]

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

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


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


 
Ega23 ©   (2005-06-28 11:57) [13]

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


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

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

:-)



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

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

Наверх




Память: 0.51 MB
Время: 0.049 c
14-1119378830
Sulimxar
2005-06-21 22:33
2005.07.18
Производительность


14-1119631258
Kerk
2005-06-24 20:40
2005.07.18
Флудеры - кто они?


3-1118308515
desha
2005-06-09 13:15
2005.07.18
Dll и базы данных.


11-1102698214
uuzh
2004-12-10 20:03
2005.07.18
2 ECM: Насколько реально перепилить KOLIB под Kylix3 ?


1-1120153988
Виталька2005
2005-06-30 21:53
2005.07.18
Локализация прграммы. Нужен совет..