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

Вниз

Создание компонентов в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.032 c
1-1120294862
Гаврилов В.А.
2005-07-02 13:01
2005.07.18
Как возвести в 0,25 степень


14-1119607278
boriskb
2005-06-24 14:01
2005.07.18
Экономим на зарплатах?


1-1119796400
Starcom
2005-06-26 18:33
2005.07.18
Открытие Microsoft Word документа в приложении...


14-1119867598
stone
2005-06-27 14:19
2005.07.18
Начальник тупой?


14-1119959261
-=XP=-
2005-06-28 15:47
2005.07.18
Постучим о дно кружки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский