Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

Инспектор объектов   Найти похожие ветки 

 
Gari   (2002-10-16 08:33) [0]

Добрый день уважаемые господа. У меня такой вопрос. можек кто поможет, если знает. А именно: можно ли в инспекторе объектов, каким либо образом отображать свойства русскими буквами (тобиш по русски). И второй вопрос: неподскажете каким образом можно в компонент с классом унаследованном от TImage вставить рисунок (bmp), но так чтобы он находился внутри самого компонента.


 
MBo   (2002-10-16 08:44) [1]

???
Label.Caption в инспекторе русскими пишется нормально


 
Gari   (2002-10-16 08:47) [2]

Может быть я неправильно поставил вопрос. Мне нужно чтобы писалось не Label.Caption а Label.Заголовок. Вот как. А как по второму вопросу?


 
Separator   (2002-10-16 08:49) [3]

1) Подправь сам вие вручную с помощью Restorator

2) Если ты его зарегистрировал в Delphi, то так же как и в TImage, т.е. щелка на Picture в Инспекторе объектов, а если нет, то загружай рисунок в компанент. Например:

procedure TForm1.FormCreate(Sender: TObject);
var
Image: TMyImage;
begin
Image1.Picture.LoadFromFile("FileName.bmp");
end


 
Alx2   (2002-10-16 08:51) [4]

>Gari (16.10.02 08:47)
1. Не получится

2.
У наследников Image есть свойство Picture. У него есть метод LaodFromFile


Reads the file specified in FileName and loads the data into the TPicture object.

procedure LoadFromFile(const FileName: string);

Или это не то, что имелось в виду?


 
MBo   (2002-10-16 08:52) [5]

Название свойства- идентификатор, и русским быть не может


 
Gari   (2002-10-16 08:55) [6]

1) Что такое Restorator.
2) Каким образом можно загрузить картинку из самого компонента, типа ресурсов.


 
roadster   (2002-10-16 08:58) [7]

а давайте писать так:
фор и := 1 ту 10 ду
бегин
ШоуМессэдж("Хелло Ворлд!")
енд;
И Борландов попросим: чтобы Дельфина полностью русифицировали!
:0)


 
Gari   (2002-10-16 09:02) [8]

Обидеть каждый может а конструктивное предложение, слабо дать.


 
Opuhshii   (2002-10-16 09:03) [9]

2Gari (16.10.02 08:33)
1. или это что-то в стиле
TButton.ОнКлик ?????

2. что значит "внутри самого компонента."
"внутри" TImage есть TPicture у которого есть property Bitmap: TBitmap.... хочется ещё, пожалуйста,.

....
private
FBitmap1:TBitmap;
public
property Bitmap1: TBitmap read FBitmap1 write FBitmap1;
....

,в конструкторе можно написать LoadFromResource, или нарисовать его самому,..


 
Separator   (2002-10-16 09:06) [10]

Лучше так:

цикл и:= от 1 до 10
начать
ПоказатьСообщение("Привет Мир")
кончить


А Restorator, это такая прога, с помощью которой можно в любых win32 приложения заменять любыу ресурсы на свои, если помучаться то можно с помощью нее все минюшки русифицировать, а вот в инспекторе объектов все русским сделать, это наврядли, хотя мож попробовать, может тогда тебя в Борланд на работу возьмут :)


 
Gari   (2002-10-16 09:06) [11]

1) Вы правильно поняли. Я думаю можно каким либо образом это сделать. Если можно хорошо. Если нет то свой вопрос снимаю.

2) LoadFromResource, это надо опять где то хранить файл изображения, или его можно поместить внутрь компонента?


 
Opuhshii   (2002-10-16 09:09) [12]

5 минут и столько шума,.. ;))
2Gari (16.10.02 09:02)
Вот Вам мое (тобишь имхо) конструктивное предложение
1.отображать свойства русскими буквами - забудь,..
2.Каким образом можно загрузить картинку из самого компонента, типа ресурсов - LoadFromResource :)


 
Separator   (2002-10-16 09:26) [13]

> Gari (16.10.02 09:06)
зарегистрируй свой компонент в дельфях и тогда его свойства можно будет править в инспекторе


 
Gari   (2002-10-16 09:37) [14]

Непонял, ответа. мы вроде всегда создавая компонент, регистрируем его.


 
Юрий Зотов   (2002-10-16 09:48) [15]

Добавьте вот этот модуль к любому design-time пакету (или создайте новый) - и наслаждайтесь.

unit
Izvrat;

interface

uses
DsgnIntf;

type
TRusCaptionProperty = class(TCaptionProperty)
function GetName: string; override;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterPropertyEditor(TypeInfo(TCaption), nil, "Caption", TRusCaptionProperty)
end;

function TRusCaptionProperty.GetName: string;
begin
Result := "Заголовок"
end;

end.


 
Separator   (2002-10-16 09:51) [16]

Не обязательно, можно так:

unit Unit1;

type
TMyImage = class(TImage)
public
constructor Create(AOwner: TComponent; BmpName: TFileName)
end;

TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var
Image1: TMyImage;

procedure TForm1.FormCreate(Sender: TObject);
begin
Image1:= TMyImage.Create(self, "MyBmp.bmp");
wiht Image1 do
begin
Align:= alClient;
Show
end
end;

{ TMyImage }

constructor TMyImage.Create(AOwner: TComponent; BmpName: TFileName);
begin
inherited Create(AOwner);
Picture.LoadFromFile(BmpName)
end;

end.


Это просто пример создания компонента, который не види Инспектор объектов, а если тыы хочешь, чтоб видел, то создавай с помощью Component>New Component


 
han_malign   (2002-10-16 09:58) [17]

> Separator
Зря смеетесь был такой язык ША(школьный алгоритмический)(правда с ПК-шками в то время слабо было), а 1С до сих пор этим грешит.
> Gari
З.Ы. Так что, если хочется писать программы на русском, вам в 1С.
З.З.Ы.
procedure RegisterClass(AClass: TPersistentClass);

Description

Call RegisterClass to register a class with the streaming system. Form classes and component classes that are referenced in a form declaration (instance variables) are automatically registered. Any other classes used by an application must be explicitly registered by calling RegisterClass if instances are to be saved.

Once classes are registered, they can be loaded or saved by the VCL streaming system. GetClass returns nil when passed the class name of an unregistered class, and FindClass raises an exception for unregistered classes.

The AClass parameter is the class that is descended from TPersistent. Put the call to RegisterClass in a Register procedure or in the initialization section of the unit in which the class is defined.

If the class is already registered, RegisterClass does nothing. If a different class with the same name is already registered, RegisterClass raises an EFilerError exception.

Note: Registering a component using the RegisterNoIcon or RegisterComponents method does not automatically register the class. It is still necessary to call RegisterClass for components.

потом делаешь Components->Install Component, или компилишь компонент в BPL и делаешь Components->Install Packages, потом соответственно Components->Configure Palette


 
vads   (2002-10-16 10:02) [18]

Интересно только - ЗАЧЕМ ВСЕ ЭТО ???
В коде ты к свойства тоже "через кириллицу" будешь обращаться и Help перепишешь, что-ли ???

Это не из желания обидеть - просто цель непонятна совсем


 
Юрий Зотов   (2002-10-16 11:36) [19]

> В коде ты к свойства тоже "через кириллицу" будешь обращаться
> и Help перепишешь, что-ли ???

> можно ли в инспекторе объектов, каким либо образом отображать
> свойства русскими буквами (тобиш по русски)


Вношу ясность.

1. В ИНСПЕКТОРЕ ОБЪЕКТОВ - можно, и приведенный выше пример показывает, как это делается, причем совершенно легально. Ресурсы и Restorator здесь абсолютно ни при чем.

2. На название свойства это никак не повлияет. Как оно было "Caption" - так и останется.


 
REA   (2002-10-16 12:14) [20]

где то так будет:

Пер
ЫЫ: Двойной;
ё: Одиночный;
ы: Целый;
для ы := 1 до 10 делай
начало
Диалог := ТДиалог.Сделать(Нуль);
попробуй
Если Диалог.ПоказатьМодальный()=мрХор То
попробуй
ЫЫ := ЫЫ/ё;
кроме
ПоказатьСообщение(ПлавающееВСтр(ё));
конец
наконец
Диалог.Свободен;
конец
конец


 
Gari   (2002-10-16 13:14) [21]

Огромное спасибо Юрию Зотову. Его пример и рекомендации мне полностью помогли. Мир не без добрых людей. Еще раз огромное спасибо.


 
vads   (2002-10-16 13:34) [22]

Юрий Зотов ©

Да понятно, можно и пример совершенно правильный и "внесенная ясность" понятно - просто жутко любопытно зачем это


 
roadster   (2002-10-16 14:06) [23]

М-да... vads прав, незачем это.
Лабель.Заголовок... Баловство все это...

Меня как-то программер один достал: а нет ли такого компонента- кнопки, где кэпшном- многоточие (...). Пришлось для него написать. Назвал TLamerButton :0)


 
Gari   (2002-10-16 14:21) [24]

Понятное любопытство. А нужно это за тем что люди далекие отволшебства программирования, но озадаченные в направлении создания какого либо специального приложения (например компьютерной модели электрического двигателя), недолжны себя утруждать расшифровыванием, а что такое caption, hint, with и так далее. А должны видеть все тоже но на русском языке, дабы не пугаться неизвестных названий. Вот за чем это нужно.


 
turusov   (2002-10-16 14:33) [25]

1. Borland и его производные, очень маленькая (сравнительно) фирма и у нее нет возможности подстраиваться под различные условия. (Примерно так сказал Фаронов В.В.)
2. Для работы с TImage используй:
LoadFromFile(‘FileName.*’)
LoadFromResourceName(HInstance, ‘Wallpaper’#0);
Для создания файлов с ресурсами использовать:
{$Delphi}\Bin\IMAGEDIT.EXE или
brcc32.exe -ic:\pas\Res MyRes.rc > brcc32.txt, где
MyRes.rc – txt файл
ARR_MAX BITMAP “ARR_Max.bmp”
ARR_MIN BITMAP “ARR_Min.bmp”
AG_INI ICON “AG_INI.ico”
Wallpaper BITMAP “NsFindFile.bmp”
Создается MyRes.res, который указываешь в PAS или DPR -> {$R MyRes.res}
Или используешь МЕНЮ Project\Resourse и добавляешь там.
А состав ресурсов «любого» exe файла можно посмотреть демонстрационным resxplor.dpr


 
Gari   (2002-10-16 14:36) [26]

У меня в догонку вопрос. Надеюсь, что Юрий Зотом меня снова выручит. Если я добавляю своё свойство (типа integer), то от какого типа мне наследовать TRus......Property.

type
TRus......Property = class(?????????????)
function GetName: string; override;
end;

и соответственно
RegisterPropertyEditor(TypeInfo(????????), nil, "Caption", TRus........Property)

Помогите если можете.


 
roadster   (2002-10-16 14:39) [27]

Разве люди, "далекие от волшебства программирования", будут писать код для "создания какого либо специального приложения"?
Если это архитектор проекта, то ему без разницы, Caption ли это или Заголовок, он в код в принципе лезть не должен, а если кодировщик- то что такое Caption, он знать должен. А если в другой среде писать будет? Опять русифицировать object inspector? А писать- то время останется?


 
Gari   (2002-10-16 14:44) [28]

Так вот архитектору проекта, как раз и надо знать специальные названия, такие как Индуктивность взаимоиндукции, реация якоря, магнитные потоки и.т.д. А теперь представь все это но написанное по английски я думаю и у специалиста бошка закружится, и отпадет всякое желание общаться с программой. А по поводу работы в другом приложении для этого существует ActiveX, с его библиотеками.


 
roadster   (2002-10-16 15:03) [29]

Копаться в инспекторе- прерогатива программера, архитектора не должны беспокоить свойства объектов, ибо для него подробности реализации кода несущественны. Он ведь не будет писать Якорь1.Реакция := 10.


 
Gari   (2002-10-16 15:07) [30]

Он не должен писать. Он должен надрать из панели инструментов необходимые компоненты. В инспекторе объектов связать их в единую систему не написав и строчки кода и запустить проект на выполнение.


 
Alex4444444444   (2002-10-16 18:19) [31]

> Gari
Vot tak i poluchayutsya programmy, zanimayushie 10M i ne delayushie nichego...

A to, chto svoystva v inspectore---te zhe, chto i v code, eto feature, a ne bug! Kak zhe inache code to pisat"? I, k stati, posle etoy russificacii, ona budet sozdavat" procedury typa
Forma1.PriShelke(Otpravitel": Ob"ect) ? (OK, Otpravitel", eto shutka, no kak na schet "PriShelke" cyrillicey?)


 
Ketmar   (2002-10-16 19:46) [32]

REA:
>Диалог.Свободен;
вот это мне понравилось. так и видится программер, командным голосом говорящий: "Диалог? Свободен!". или истерически кричащий: "Диалог, ну миленький, ну свободен же!" %-)

Satanas Nobiscum! 16-Oct-XXXVII A.S.


 
Delphist   (2002-10-16 22:47) [33]

> Alex4444444444 (16.10.02 18:19)

> no kak na schet "PriShelke" cyrillicey?)

Проверь сам и сам убедись, что сказал глупость.



 
roadster   (2002-10-17 06:39) [34]

>Он не должен писать. Он должен надрать из панели инструментов
>необходимые компоненты. В инспекторе объектов связать их в
>единую систему не написав и строчки кода и запустить проект на
>выполнение.

Как в анекдоте: прогу написал, сталось отладить...


 
Bis   (2002-10-17 09:20) [35]

В общем понятно стремление разработчика.
Вместо того, чтобы написать соответствующую прогу, хочется "поиздеваться" над средой в Дельфи, да и заставить других в этом работать.
Но мне кажется, что тем самым головная боль становится больше, ведь кто застрахует от того, что он случайно не сделает чего-то неправильно, а Мерфи с его законами актуален по прежнему.

P.S.
Gari, обижаться или нет - право каждого ...


 
Юрий Зотов   (2002-10-17 10:55) [36]

> Gari

> Если я добавляю своё свойство (типа integer), то...

См. исходники и комментарии в модуле DsgnIntf. Там найдете и Integer и еще многое что. А главное, поймете суть и смысл редакторов свойств, больше вопросов возникать не будет.

Что касается их регистрации - см. RegisterPropertyEditor в хелпе.

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

Если интересно мое мнение, то оно совпадает с мнением большинства - изврат это. И возникнут проблемы. Вот некоторые из них.

1. Придется перерегистровать все стандартные редакторы на свои. А их довольно много.

2. Не по всем редакторам есть легкодоступная информация. Скажем, перерегистрировать TCollectionProperty не так-то просто. Можно, и когда-то давно я это даже делал, но как именно - уже забыл, навскидку не скажу, помню только, что пришлось попотеть. И не факт, что удастся перерегистрировать абсолютно все редакторы.

3. Некоторые редакторы (особенно, TObjectProperty и его потомки, TStringsProperty, TCollectionProperty и пр.) придется делать существенно более сложными, чем в примере. Потому что, например, один и тот же объект может иметь совершенно разные имена - Items, Lines, Strings и пр. Стандартные редакторы просто берут эти имена из RTTI, а Вам придется разруливать врукопашную. И еще придумать способ такой рулежки.

4. Сторонние пакеты компонентов тоже часто имеют свои редакторы. Если такие пакеты используются и их исходников нет - то и нет информации, позволяющей перекрыть эти редакторы.

Так что взвесьте сами - что придется вложить и что получится в результате. Стоит ли овчинка выделки?

Другое дело, если Вы пишете специализированный проект, использующий те же механизмы, что и IDE, и этот проект должен быть полностью рускоязычным. Тогда - да, выбора нет.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.009 c
14-92703
Leon_O
2002-10-08 09:53
2002.10.28
Delphi 7


1-92425
Кен
2002-10-15 06:40
2002.10.28
Как в Richedit e можно создавать списки аналогичные хтмловским


1-92441
Anar
2002-10-17 22:40
2002.10.28
HDDs


4-92778
BFG-2000
2002-09-13 11:52
2002.10.28
Как реализовать ButtonClick ?


1-92591
Romych
2002-10-15 17:40
2002.10.28
Компонент UDP





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