Главная страница
    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.5 MB
Время: 0.005 c
15-1229321086
Slider007
2008-12-15 09:04
2009.02.08
С днем рождения ! 15 декабря 2008 понедельник


3-1214304735
Roberto
2008-06-24 14:52
2009.02.08
Выбор метода реализации отчетов


8-1190441010
andreil
2007-09-22 10:03
2009.02.08
Помогите с DirectInput!


15-1229164615
koha!
2008-12-13 13:36
2009.02.08
Обновил MSGLoger.exe


2-1230151206
Nostalgia
2008-12-24 23:40
2009.02.08
символы





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