Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.016 c
15-1229263057
Sergey Masloff
2008-12-14 16:57
2009.02.08
оффтоп и наглая реклама. Продам гитару


15-1229320470
desc
2008-12-15 08:54
2009.02.08
FloatToStr


15-1228950052
DDR2
2008-12-11 02:00
2009.02.08
Не работает память...


4-1204667510
Vemer
2008-03-05 00:51
2009.02.08
Как сделать PreView заставки на OpenGL?


15-1228922168
Нидхелп
2008-12-10 18:16
2009.02.08
Срочно нужна математическая помощь.