![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонентов в 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