Текущий архив: 2009.02.08;
Скачать: CL | DM;
Вниз
private|public разделы для программно создаваемой формы Найти похожие ветки
← →
mufan (2008-04-06 18:01) [0]доброго времени суток всем!
проблема такая: программно создаю MDI-дочернюю форму...
допустим так:var
new_project: TForm;
...
begin
new_project:=TForm.Create(self);
new_project.Width:=500;
new_project.Height:=500;
new_project.FormStyle:=fsMDIChild;
...
и есть желание добавить к форме этой, например, Property типа Integer и с именем MyField... как это сделать не подскажете???
← →
{RASkov} © (2008-04-06 18:05) [1]> [0] mufan (06.04.08 18:01)
> добавить к форме этой, например, Property типа Integer и
> с именем MyField... как это сделать не подскажете???
Никак.
Нужно зарание описать тип, в данном случае класс родительской формы, со всеми необходимыми полями(свойствами)...
← →
Семеныч (2008-04-06 18:25) [2]> mufan (06.04.08 18:01)
Свойства принадлежат классу формы, а не самой форме. Программа же создает саму форму, а ее класс программист должен описать заранее, со всеми нужными ему полями, свойствами и методами.
← →
Leonid Troyanovsky © (2008-04-06 18:31) [3]
> mufan (06.04.08 18:01)
> и есть желание добавить к форме этой, например, Property
> типа Integer и с именем MyField...
SetProp(new_project.Handle, "MyField", Value)
--
Regards, LVT.
← →
mufan (2008-04-06 18:54) [4]=[
если я вас правильно понял... я должен был сделать что-то типа:type
Tfrm_childwindow = class(TForm)
public
{ Public declarations }
foo: integer;
end;
...
var
new_project: Tfrm_childwindow;
...
begin
new_project:=Tfrm_childwindow.Create(self);
new_project.Width:=500;
new_project.Height:=500;
new_project.FormStyle:=fsMDIChild;
ошибку пишет при исполнении:
"Project prog.exe raised exception class EResNotFound with message "Resourse Tfrm_childwindow not found""
← →
{RASkov} © (2008-04-06 19:12) [5]> [4] mufan (06.04.08 18:54)
> ошибку пишет при исполнении:
Для форм нужны ресурсные файлы *.dfm
Попробуй вариант [3].
← →
mufan (2008-04-06 19:14) [6]
> SetProp(new_project.Handle, "MyField", Value)
решило проблему!
всем большое спасибо за оперативную помощь!!!
← →
Семеныч (2008-04-06 23:02) [7]> mufan (06.04.08 19:14) [6]
Только надо иметь в виду, что это будет свойство окна в терминах Windows, а не свойство формы в терминах Delphi. С ним можно работать через GetProp и SetProp, но нельзя работать с использованием концепций ООП.
← →
tesseract © (2008-04-07 00:18) [8]
> Только надо иметь в виду, что это будет свойство окна в
> терминах Windows, а не свойство формы в терминах Delphi.
> С ним можно работать через GetProp и SetProp, но нельзя
> работать с использованием концепций ООП.
Чего это ? заводишь свойство - ту туда свой Set/GetProp. Не путай тёплое с мягким.
ЗЫ: TCustomForm уже списали ? pulished от Public только в DesignTime отличаеться.
← →
Семеныч (2008-04-07 00:26) [9]> tesseract © (07.04.08 00:18) [8]
Э-э-э... извините за вопрос, но Вы ветку, собственно говоря, читали?
← →
icWasya © (2008-04-08 15:36) [10]если делаете так
type
Tfrm_childwindow = class(TForm)
public
{ Public declarations }
foo: integer;
end;
и не создаёте DFM, то вместо
new_project:=Tfrm_childwindow.Create(self);
нужно
new_project:=Tfrm_childwindow.CreateNew(self);
← →
Barsuk (2008-04-08 19:01) [11]А можно поизвращаться, создать новую форму, добавить нужные Property и вызывать по new_project:=Tfrm_childwindow.Create(self); никаких ошибок не будет, только нужно еще убрать ее из списка Auto-Create forms.
← →
tesseract © (2008-04-08 20:34) [12]
> Э-э-э... извините за вопрос, но Вы ветку, собственно говоря,
> читали?
Читал. Просто высказывание ваше бредово несколько звучит. "Термины ООП " особенно порадовали.
← →
Семеныч (2008-04-08 20:48) [13]> tesseract © (08.04.08 20:34) [12]
> Читал.
Значит, "играл, но не угадал ни одной буквы". Потому что в [8] именно Вы, извините, спутали, как Вы изволили выразиться, "теплое с мягким".
> Просто высказывание ваше бредово несколько звучит. "Термины ООП "
> особенно порадовали.
То есть: если Вы некоего высказывания не поняли, то оно бредовое. Что ж, такое замечательное свойство действительно некоторым индивидуумам присуще, но если бы Вы дали себе труд хоть немного подумать над [3] и [6], а потом еще и заглянуть в Win32 SDK, то вполне возможно, что смогли бы понять и то, о чем шла речь в [7].
А также то, что бред написали именно Вы, в [8]. Спутав теплое с мягким.
← →
tesseract © (2008-04-08 21:01) [14]
> [6], а потом еще и заглянуть в Win32 SDK, то вполне возможно,
> что смогли бы понять и то, о чем шла речь в [7].
Я неплохо знаю SDK, ООП и COM - я сказал, что в любой класс можно добавить и GETPop и SetPop. И пользоваться всеми преимуществами ООП. Так лихо закрутить фразу - это надо суметь.
> Свойства принадлежат классу формы, а не самой форме.
Про классовые методы я знаю - а вот про классовые свойства слышу впервые. И что "Класс" не являеться описанием формы, и объект уже не властен над своими методами.....
← →
Семеныч (2008-04-08 21:26) [15]> tesseract © (08.04.08 21:01) [14]
> Я неплохо знаю SDK
В этом есть ОЧЕНЬ большие сомнения. Иначе Вы бы поняли, о чем шла речь в [3], [6] и [7].
Если человек:
- не знает, что у окон Windows бывают свойства;
- не знает функций WinAPI для работы со свойствами окон;
- не видит, что это за SetProp использована в [3];
- и даже то, что первым параметром передается некий загадочный хэндл, ему тоже ни о чем не говорит;
- но при этом заявляет "Я неплохо знаю SDK",
то есть очень серьезные основания очень несерьезно к такому заявлению отнестись.
> я сказал, что в любой класс можно добавить и GETPop и SetPop.
> Так лихо закрутить фразу - это надо суметь.
И верно. Так сказать банальность - это надо суметь. Но было бы еще лучше слово ПОП прямо так и написать - по-русски. LOL.
> а вот про классовые свойства слышу впервые.
Как много Вам открытий чудных
Готовит просвещенья дух...
Увы... Вы не понимаете азов ООП. Знаете их - это да. Но не понимаете их сути.
Дружище, если при создании экземпляра класса некое свойство АВТОМАТИЧЕСКИ становится атрибутом ЛЮБОГО такого экземпляра, то это означает, что либо это свойство взялось с потолка, либо является атрибутом САМОГО класса. Ну а поскольку с потолка свойства не берутся, то...
================
Резюме: читать Петцольда и Конопку.
← →
tesseract © (2008-04-08 21:35) [16]
> Увы... Вы не понимаете азов ООП. Знаете их - это да. Но
> не понимаете их сути.
Это ВЫ их не понимаете, срочно прочитать про VMT. Свойства что появились в памяти ? Назвать свойства классовыми - и тем более, что их НЕТ в классической теории ООП - или вы лично путаете их с полями......
> ПОП прямо так и написать - по-русски. LOL.
Привык к автодополнению кода, быват :-)
> - не знает функций WinAPI для работы со свойствами окон;
> - не видит, что это за SetProp использована в [3];
Я WinApi с 95 знаю. Мне ЧГ, до фонаря какая там что используеться, что к классам они отношения не имеют это факт, но то что эти функции оптимизированы для классовой изоляции - тоже факт.
> Резюме: читать Петцольда и Конопку.
Кнута для начала прочитать. А не листать.
> - и даже то, что первым параметром передается некий загадочный
> хэндл, ему тоже ни о чем не говорит;
Дескриптор, у вас очень плохой перевод. Это к слову о ПОП о пониманию SDK.
← →
Семеныч (2008-04-08 21:41) [17]Так... диагноз ясен: воинствующий.
← →
tesseract © (2008-04-08 21:41) [18]
> Так... диагноз ясен: воинствующий.
Взаимно :-)
← →
app © (2008-04-09 15:12) [19]> tesseract (08.04.2008 21:41:18) [18]
Кончайте перепалку, в конце концов на сайте есть чат для этого.
← →
Kolan © (2008-04-09 15:28) [20]> Про классовые методы я знаю — а вот про классовые свойства
> слышу впервые.TMyClass = class
private
class var FMyProp: Integer;
class property MyProp: Integer read FMyProp write FMyProp;
end;
← →
tesseract © (2008-04-09 15:39) [21]
> Kolan © (09.04.08 15:28) [20]
Да всё таки появились. Приятно.
Страницы: 1 вся ветка
Текущий архив: 2009.02.08;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.005 c