-
доброго времени суток всем! проблема такая: программно создаю 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... как это сделать не подскажете???
-
> [0] mufan (06.04.08 18:01) > добавить к форме этой, например, Property типа Integer и > с именем MyField... как это сделать не подскажете???
Никак. Нужно зарание описать тип, в данном случае класс родительской формы, со всеми необходимыми полями(свойствами)...
-
> mufan (06.04.08 18:01)
Свойства принадлежат классу формы, а не самой форме. Программа же создает саму форму, а ее класс программист должен описать заранее, со всеми нужными ему полями, свойствами и методами.
-
> mufan (06.04.08 18:01)
> и есть желание добавить к форме этой, например, Property > типа Integer и с именем MyField...
SetProp(new_project.Handle, 'MyField', Value)
-- Regards, LVT.
-
=[ если я вас правильно понял... я должен был сделать что-то типа: type
Tfrm_childwindow = class(TForm)
public
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'"
-
> [4] mufan (06.04.08 18:54) > ошибку пишет при исполнении:
Для форм нужны ресурсные файлы *.dfm
Попробуй вариант [3].
-
> SetProp(new_project.Handle, 'MyField', Value)
решило проблему!
всем большое спасибо за оперативную помощь!!!
-
> mufan (06.04.08 19:14) [6]
Только надо иметь в виду, что это будет свойство окна в терминах Windows, а не свойство формы в терминах Delphi. С ним можно работать через GetProp и SetProp, но нельзя работать с использованием концепций ООП.
-
> Только надо иметь в виду, что это будет свойство окна в > терминах Windows, а не свойство формы в терминах Delphi. > С ним можно работать через GetProp и SetProp, но нельзя > работать с использованием концепций ООП.
Чего это ? заводишь свойство - ту туда свой Set/GetProp. Не путай тёплое с мягким.
ЗЫ: TCustomForm уже списали ? pulished от Public только в DesignTime отличаеться.
-
> tesseract © (07.04.08 00:18) [8]
Э-э-э... извините за вопрос, но Вы ветку, собственно говоря, читали?
-
если делаете так type
Tfrm_childwindow = class(TForm)
public
foo: integer;
end; и не создаёте DFM, то вместо
new_project:=Tfrm_childwindow.Create(self);
нужно
new_project:=Tfrm_childwindow.CreateNew(self);
-
А можно поизвращаться, создать новую форму, добавить нужные Property и вызывать по new_project:=Tfrm_childwindow.Create(self); никаких ошибок не будет, только нужно еще убрать ее из списка Auto-Create forms.
-
> Э-э-э... извините за вопрос, но Вы ветку, собственно говоря, > читали?
Читал. Просто высказывание ваше бредово несколько звучит. "Термины ООП " особенно порадовали.
-
> tesseract © (08.04.08 20:34) [12]
> Читал.
Значит, "играл, но не угадал ни одной буквы". Потому что в [8] именно Вы, извините, спутали, как Вы изволили выразиться, "теплое с мягким".
> Просто высказывание ваше бредово несколько звучит. "Термины ООП " > особенно порадовали.
То есть: если Вы некоего высказывания не поняли, то оно бредовое. Что ж, такое замечательное свойство действительно некоторым индивидуумам присуще, но если бы Вы дали себе труд хоть немного подумать над [3] и [6], а потом еще и заглянуть в Win32 SDK, то вполне возможно, что смогли бы понять и то, о чем шла речь в [7].
А также то, что бред написали именно Вы, в [8]. Спутав теплое с мягким.
-
> [6], а потом еще и заглянуть в Win32 SDK, то вполне возможно, > что смогли бы понять и то, о чем шла речь в [7].
Я неплохо знаю SDK, ООП и COM - я сказал, что в любой класс можно добавить и GETPop и SetPop. И пользоваться всеми преимуществами ООП. Так лихо закрутить фразу - это надо суметь.
> Свойства принадлежат классу формы, а не самой форме.
Про классовые методы я знаю - а вот про классовые свойства слышу впервые. И что "Класс" не являеться описанием формы, и объект уже не властен над своими методами.....
-
> tesseract © (08.04.08 21:01) [14]
> Я неплохо знаю SDK
В этом есть ОЧЕНЬ большие сомнения. Иначе Вы бы поняли, о чем шла речь в [3], [6] и [7].
Если человек:
- не знает, что у окон Windows бывают свойства; - не знает функций WinAPI для работы со свойствами окон; - не видит, что это за SetProp использована в [3]; - и даже то, что первым параметром передается некий загадочный хэндл, ему тоже ни о чем не говорит; - но при этом заявляет "Я неплохо знаю SDK",
то есть очень серьезные основания очень несерьезно к такому заявлению отнестись.
> я сказал, что в любой класс можно добавить и GETPop и SetPop. > Так лихо закрутить фразу - это надо суметь.
И верно. Так сказать банальность - это надо суметь. Но было бы еще лучше слово ПОП прямо так и написать - по-русски. LOL.
> а вот про классовые свойства слышу впервые.
Как много Вам открытий чудных Готовит просвещенья дух...
Увы... Вы не понимаете азов ООП. Знаете их - это да. Но не понимаете их сути.
Дружище, если при создании экземпляра класса некое свойство АВТОМАТИЧЕСКИ становится атрибутом ЛЮБОГО такого экземпляра, то это означает, что либо это свойство взялось с потолка, либо является атрибутом САМОГО класса. Ну а поскольку с потолка свойства не берутся, то...
================
Резюме: читать Петцольда и Конопку.
-
> Увы... Вы не понимаете азов ООП. Знаете их - это да. Но > не понимаете их сути.
Это ВЫ их не понимаете, срочно прочитать про VMT. Свойства что появились в памяти ? Назвать свойства классовыми - и тем более, что их НЕТ в классической теории ООП - или вы лично путаете их с полями......
> ПОП прямо так и написать - по-русски. LOL.
Привык к автодополнению кода, быват :-)
> - не знает функций WinAPI для работы со свойствами окон; > - не видит, что это за SetProp использована в [3];
Я WinApi с 95 знаю. Мне ЧГ, до фонаря какая там что используеться, что к классам они отношения не имеют это факт, но то что эти функции оптимизированы для классовой изоляции - тоже факт.
> Резюме: читать Петцольда и Конопку.
Кнута для начала прочитать. А не листать.
> - и даже то, что первым параметром передается некий загадочный > хэндл, ему тоже ни о чем не говорит;
Дескриптор, у вас очень плохой перевод. Это к слову о ПОП о пониманию SDK.
-
Так... диагноз ясен: воинствующий.
-
> Так... диагноз ясен: воинствующий.
Взаимно :-)
-
> tesseract (08.04.2008 21:41:18) [18]
Кончайте перепалку, в конце концов на сайте есть чат для этого.
-
> Про классовые методы я знаю а вот про классовые свойства > слышу впервые.
TMyClass = class
private
class var FMyProp: Integer;
class property MyProp: Integer read FMyProp write FMyProp;
end;
-
> Kolan © (09.04.08 15:28) [20]
Да всё таки появились. Приятно.
|