Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

private|public разделы для программно создаваемой формы [WinXP]


Страницы:   1 2

mufan ©   (2008-04-06 18:01:00) 

доброго времени суток всем!
проблема такая: программно создаю 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... как это сделать не подскажете???


tesseract   (2008-04-09 15:39:00) [1]


> Kolan ©   (09.04.08 15:28) [20]


Да всё таки появились. Приятно.


Kolan   (2008-04-09 15:28:00) [2]

> Про классовые методы я знаю — а вот про классовые свойства
> слышу впервые.

TMyClass = class
 private
   class var FMyProp: Integer;
   class property MyProp: Integer read FMyProp write FMyProp;
 end;


app   (2008-04-09 15:12:00) [3]

> tesseract  (08.04.2008 21:41:18)  [18]

Кончайте перепалку, в конце концов на сайте есть чат для этого.


tesseract   (2008-04-08 21:41:00) [4]


> Так... диагноз ясен: воинствующий.


Взаимно :-)


Семеныч   (2008-04-08 21:41:00) [5]

Так... диагноз ясен: воинствующий.


tesseract   (2008-04-08 21:35:00) [6]


> Увы... Вы не понимаете азов ООП. Знаете их - это да. Но
> не понимаете их сути.


Это ВЫ их не понимаете, срочно прочитать про VMT. Свойства что появились в памяти ?  Назвать свойства классовыми - и тем более, что их НЕТ в классической теории ООП - или вы лично путаете их с полями......


> ПОП прямо так и написать - по-русски. LOL.


Привык к автодополнению кода, быват :-)


> - не знает функций WinAPI для работы со свойствами окон;
> - не видит, что это за SetProp использована в [3];


Я WinApi с 95 знаю. Мне ЧГ, до фонаря какая там что используеться, что к классам они отношения не имеют это факт, но то что эти функции оптимизированы для классовой изоляции - тоже факт.


> Резюме: читать Петцольда и Конопку.


Кнута для начала прочитать. А не листать.


> - и даже то, что первым параметром передается некий загадочный
> хэндл, ему тоже ни о чем не говорит;


Дескриптор, у вас очень плохой перевод. Это к слову  о ПОП о пониманию SDK.


Семеныч   (2008-04-08 21:26:00) [7]

> tesseract ©   (08.04.08 21:01) [14]

> Я неплохо знаю SDK

В этом есть ОЧЕНЬ большие сомнения. Иначе Вы бы поняли, о чем шла речь в [3], [6] и [7].

Если человек:

- не знает, что у окон Windows бывают свойства;
- не знает функций WinAPI для работы со свойствами окон;
- не видит, что это за SetProp использована в [3];
- и даже то, что первым параметром передается некий загадочный хэндл, ему тоже ни о чем не говорит;
- но при этом заявляет "Я неплохо знаю SDK",

то есть очень серьезные основания очень несерьезно к такому заявлению отнестись.

> я сказал, что в любой класс можно добавить и GET Popи Set Pop.
> Так лихо закрутить фразу - это надо суметь.

И верно. Так сказать банальность - это надо суметь. Но было бы еще лучше слово ПОП прямо так и написать - по-русски. LOL.

> а вот про классовые свойства слышу впервые.

Как много Вам открытий чудных
Готовит просвещенья дух...

Увы... Вы не понимаете азов ООП. Знаете их - это да. Но не понимаете их сути.

Дружище, если при создании экземпляра класса некое свойство АВТОМАТИЧЕСКИ становится атрибутом ЛЮБОГО такого экземпляра, то это означает, что либо это свойство взялось с потолка, либо является атрибутом САМОГО класса. Ну а поскольку с потолка свойства не берутся, то...

================

Резюме: читать Петцольда и Конопку.


tesseract   (2008-04-08 21:01:00) [8]


> [6], а потом еще и заглянуть в Win32 SDK, то вполне возможно,
>  что смогли бы понять и то, о чем шла речь в [7].


Я неплохо знаю SDK, ООП и COM - я сказал, что в любой класс можно добавить и GETPop и SetPop.  И пользоваться всеми преимуществами ООП. Так лихо закрутить фразу - это надо суметь.


> Свойства принадлежат классу формы, а не самой форме.


Про классовые методы я знаю - а вот про классовые свойства слышу впервые.  И что "Класс" не являеться описанием формы, и объект уже не властен над своими методами.....


Семеныч   (2008-04-08 20:48:00) [9]

> tesseract ©   (08.04.08 20:34) [12]

> Читал.

Значит, "играл, но не угадал ни одной буквы". Потому что в [8] именно Вы, извините, спутали, как Вы изволили выразиться, "теплое с мягким".

> Просто высказывание ваше бредово несколько звучит. "Термины ООП "
> особенно порадовали.

То есть: если Вы некоего высказывания не поняли, то оно бредовое. Что ж, такое замечательное свойство действительно некоторым индивидуумам присуще, но если бы Вы дали себе труд хоть немного подумать над [3] и [6], а потом еще и заглянуть в Win32 SDK, то вполне возможно, что смогли бы понять и то, о чем шла речь в [7].

А также то, что бред написали именно Вы, в [8]. Спутав теплое с мягким.


tesseract   (2008-04-08 20:34:00) [10]


> Э-э-э... извините за вопрос, но Вы ветку, собственно говоря,
>  читали?


Читал. Просто высказывание ваше бредово несколько звучит. "Термины ООП " особенно порадовали.


Barsuk   (2008-04-08 19:01:00) [11]

А можно поизвращаться, создать новую форму, добавить нужные Property и вызывать по new_project:=Tfrm_childwindow.Create(self); никаких ошибок не будет, только нужно еще убрать ее из списка Auto-Create forms.


icWasya   (2008-04-08 15:36:00) [12]

если делаете так

type
Tfrm_childwindow = class(TForm)
public
  { Public declarations }
foo: integer;  
end;

и не создаёте DFM, то вместо

new_project:=Tfrm_childwindow.Create(self);

нужно

new_project:=Tfrm_childwindow.CreateNew(self);


Семеныч   (2008-04-07 00:26:00) [13]

> tesseract ©   (07.04.08 00:18) [8]

Э-э-э... извините за вопрос, но Вы ветку, собственно говоря, читали?


tesseract   (2008-04-07 00:18:00) [14]


> Только надо иметь в виду, что это будет свойство окна в
> терминах Windows, а не свойство формы в терминах Delphi.
>  С ним можно работать через GetProp и SetProp, но нельзя
> работать с использованием концепций ООП.


Чего это ? заводишь свойство - ту туда свой Set/GetProp. Не путай тёплое с мягким.

ЗЫ: TCustomForm уже списали ? pulished от Public только в DesignTime отличаеться.


Семеныч   (2008-04-06 23:02:00) [15]

> mufan   (06.04.08 19:14) [6]

Только надо иметь в виду, что это будет свойство окна в терминах Windows, а не свойство формы в терминах Delphi. С ним можно работать через GetProp и SetProp, но нельзя работать с использованием концепций ООП.


mufan   (2008-04-06 19:14:00) [16]


> SetProp(new_project.Handle, 'MyField', Value)

решило проблему!

всем большое спасибо за оперативную помощь!!!


{RASkov}   (2008-04-06 19:12:00) [17]

> [4] mufan   (06.04.08 18:54)
> ошибку пишет при исполнении:

Для форм нужны ресурсные файлы *.dfm

Попробуй вариант [3].


mufan   (2008-04-06 18:54:00) [18]

=[

если я вас правильно понял... я должен был сделать что-то типа:

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'"


Leonid Troyanovsky   (2008-04-06 18:31:00) [19]


> mufan   (06.04.08 18:01)  

> и есть желание добавить к форме этой, например, Property
> типа Integer и с именем MyField...

SetProp(new_project.Handle, 'MyField', Value)

--
Regards, LVT.


Семеныч   (2008-04-06 18:25:00) [20]

> mufan   (06.04.08 18:01)

Свойства принадлежат классуформы, а не самой форме. Программа же создает самуформу, а ее класспрограммист должен описать заранее, со всеми нужными ему полями, свойствами и методами.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо