![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
private|public разделы для программно создаваемой формы [WinXP]
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)
Свойства принадлежат классуформы, а не самой форме. Программа же создает самуформу, а ее класспрограммист должен описать заранее, со всеми нужными ему полями, свойствами и методами.