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

Вниз

Одинаковое значение свойств у всех Edit-ов   Найти похожие ветки 

 
programmer90   (2008-05-30 19:04) [0]

Здравствуйте уважаемые участники форума. У меня такой вопрос: Как задать одно и то же значение свойства всем обектам данного типа на форме. Пример : я хочу чтобы при к-л событии (неважно каком) всем Еdit-ам формы придать одинаковое значение Text-a. Чесно говоря видел где-то, но забыл где...Зарание всем спасибо.


 
nimble_   (2008-05-30 19:11) [1]

procedure SetProperties(ClassName, SomeProperty: string; Value: Integer);
var
  i: integer;
  PropInfo: PPropInfo;
  Component: TComponent;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    Component := Components[i];
    if (Component is TControl) and ((Component.ClassName = ClassName)
      or (ClassName = "AllComponents")) then
    begin
      PropInfo := GetPropInfo(Component.ClassInfo, SomeProperty);
      if Assigned(PropInfo) then
        SetOrdProp(Component, PropInfo, Integer(Value));
    end;
  end;
end;

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Make all components readonly
 SetProperties("AllComponents", "readonly", 1);
  // Make all components of Class TEdit invisible
 SetProperties("TEdit", "visible", 0);
  // Set the Height Property of all TLabels
 SetProperties("TLabel", "Height", 30);
  // Set ShowHint to false for all components
 SetProperties("AllComponents", "ShowHint", 0);
  // Disable all TMemo Components
 SetProperties("TMemo", "Enabled", 0);
  // Set Autosize to true for all TLabels
 SetProperties("TLabel", "Autosize", 1);
end;


 
Reindeer Moss Eater ©   (2008-05-30 19:14) [2]

Выделить всех шифтом и присвоить свойство в инспекторе объектов


 
Palladin ©   (2008-05-30 20:18) [3]


>nimble_   (30.05.08 19:11) [1]

по моему у тебя параноя ) и в следствии этого искаженное восприятие информации на входе


 
ZENsan ©   (2008-05-30 20:22) [4]

for i := 0 to ComponentCount - 1 do
 if Components[i] is TEdit then
   TEdit(Components[i]).Text := "Kakoj-to tekst";


 
nimble_   (2008-05-30 20:25) [5]

Ну если так, то не у меня одного ;) Нас уже двое
А вообще, автор точно не указал, что именно ему нужно: то ли перед компиляцией свойства менять, то ли после. ХЗ )
"видел где-то но забыл". я расценил это как изменение свойств компонентов уже запущенной проги. а то shift больна проста :)


 
ZENsan ©   (2008-05-30 20:28) [6]

Да нее... ты просто слишком заумно человеку показываешь. Он про такие вещи спрашивает, а ты ему даже не написал что пришлось бы подключить модуль TypInfo.


 
ZENsan ©   (2008-05-30 20:30) [7]

Integer(Value)?, когда ...; Value: Integer);...
:)


 
programmer90   (2008-05-30 20:36) [8]

У меня на форме только 23 едита(так нужно) впринципе их можно  ctrl+a и присвоить свойство в инспекторе объектов :) надо "из-под программы".
Palladin ©   (30.05.08 20:18) [3]- мне как новичку очень интересно что написал  nimble_
nimble_  (30.05.08 19:11) [1] - Очень подробно  написано,
,я уверен в ближайшем будущем пригодится.
ZENsan ©  (30.05.08 20:22) [4]--Спасибо это то что мне нужно


 
ZENsan ©   (2008-05-30 20:42) [9]

Кстати.. бывает случай когда можно и так:

for i := 1 to 23 do
 TEdit(FindComponent("Edit" + IntToStr(i))).Text := "Kakoj-to tekst";


 
Palladin ©   (2008-05-30 20:53) [10]

ну да... в ближайшем будущем... когда через 2 может и поймешь, что же есть RTTI, и чем порочен приведенный код для задачи назначения одинаковоназванного published  свойства разным классам...


 
programmer90   (2008-05-30 20:56) [11]


> ZENsan ©   (30.05.08 20:42) [9]
> Кстати.. бывает случай когда можно и так:for i := 1 to 23
> do  TEdit(FindComponent("Edit" + IntToStr(i))).Text := "Kakoj-
> to tekst";

Вы прям мои мысли читате :) , я над этим достаточно долго думал...
даже пытался так:  for i := 1 to 23 do
                             Edit[i].Text:="Kakoj-to";
естесственно потом понял что это совсем неправильно, так как это не нумеративная величина, и не массив, а TCaption ... ну вы сами знаете.
Большое спасибо ZENsan © , nimble_.


 
nimble_   (2008-05-30 20:57) [12]

Публично признаю, что ступил. Рву волосы) Ну да ладно, мож кому ещё нужно будет


 
programmer90   (2008-05-30 21:01) [13]


> Palladin ©   (30.05.08 20:53) [10]
> ну да... в ближайшем будущем... когда через 2 может и поймешь

надеюсь что не "через 2 века" имели ввиду.


 
Сергей М. ©   (2008-05-30 21:08) [14]


> programmer90


Что ж ты такое гениальное разрабатываешь ?
С учетом http://delphimaster.net/view/2-1212160292/ и 23-х Edit"ов, которые ты засандалил на форму и теперь не знаешь как с ними уравляться разом ?


 
programmer90   (2008-05-30 21:09) [15]

nimble_   (30.05.08 20:57) [12]

Публично признаю, что ступил. Рву волосы) Ну да ладно, мож кому ещё нужно будет
в любом случае если бы
> пришлось бы подключить модуль TypInfo

я бы всё равно догадался, поскольку без подключенного модуля он был выдал ошибку, после чего , я бы поинтерисовался бы синтаксисом , нажав к  ctrl+click накой-нить процедуру и функцию я бы наверняка вышел бы на модуль Typinfo(я всё-таки думаю что  Typeinfo, возможно я ошибаюсь).
так что не всё так страшно. Спасибо всем.


 
ZENsan ©   (2008-05-30 21:24) [16]


>  и чем порочен приведенный код для задачи назначения одинаковоназванного
> published  свойства разным классам...

Если ты про мой код, то это пример именно для его случая, но никак не универсальный.


 
programmer90   (2008-05-30 21:25) [17]


> Сергей М. ©   (30.05.08 21:08) [14]
> > programmer90Что ж ты такое гениальное разрабатываешь ?
> С учетом http://delphimaster.net/view/2-1212160292/
> и 23-х Edit"ов, которые ты засандалил на форму и теперь
> не знаешь как с ними уравляться разом ?

Хорошо я раскрою секрет, я разрабатываю форму которая подобна форме накладной, которая обычно пишется вручную.так как я IBM-совместимый человек , решил  облегчить труд, не писать всё вручную и печатать при помощи  procedure form1.print; ну и принтера конечно:);.
Как вы поняли 23 едита это есть места для набора текста. на самом деле, надо не только "попасть" чтобы координаты на форме, соответствовали бы на бумажке. Код поучился достаточно большим, так как кроме "попадания",нужно ещё облегчить труд а не усложнять.
Там есть пару полей для ввода имен, всёго имен 15, это наши производители, я сделал так от 1-15  набираем и автоматически кэпшну присваивается соот. цифре имя, это ещё цветочки, пришлось узнать как  сделать  многострочный хинт для подсказок, можно комбобокс но у него там стрелка справа, при печяти эта стрелка нафиг не нужна, и бордерстайл и едит -ов ноне делаю чтобы не печатал лишнее короче, очень много всего.
Пришлось это всё на CodeGear Rad Studio 2007 делать так как D7 криво поддеживает интернациональные символы, кjроче долгая история....


 
ZENsan ©   (2008-05-30 21:26) [18]

Нет именно TypInfo, потому что функцию так назвали TypeInfo.


 
programmer90   (2008-05-30 21:28) [19]

Сергей М. ©   (30.05.08 21:08) [14]

> > С учетом http://delphimaster.net/view/2-1212160292/
Это уже совсем другая история...


 
Palladin ©   (2008-05-30 21:29) [20]


>я бы поинтерисовался бы синтаксисом , нажав к  ctrl+click накой-нить процедуру и функцию я бы наверняка вышел бы на модуль Typinfo

наивный... ну попробуй... нажми волшебное сочетание... да и парень совсем не по этому признает, что его пост не адекватен, а по тому что и я сказал...

а 2 - это 2 года ) хотя прогноз примерный... может и 4 года... раз ктрл+клик решенье всех проблем...


 
programmer90   (2008-05-30 21:29) [21]


> ZENsan ©   (30.05.08 21:26) [18]
> Нет именно TypInfo, потому что функцию так назвали TypeInfo.
>
А теперь понял...


 
Сергей М. ©   (2008-05-30 21:31) [22]

О боже ...

Ты что же, дружок, выводишь на принтер изображение формы ввода данных ?!


 
programmer90   (2008-05-30 21:31) [23]

Palladin ©
> хотя прогноз примерный... может и 4 года... раз ктрл+клик
> решенье всех проблем...

Спасибо за критику , вам виднее..


 
programmer90   (2008-05-30 21:32) [24]


> Сергей М. ©   (30.05.08 21:31) [22]
> О боже ...Ты что же, дружок, выводишь на принтер изображение
> формы ввода данных ?!

Ага :),а есть другие варианты про которые я незнаю?


 
Сергей М. ©   (2008-05-30 21:34) [25]


> я IBM-совместимый человек


Ты просто полный дилетант, а не "совместимый человек")

Существует огромное кол-во генераторов отчетов, ты про них хоть что-нибудь слышал ?


 
nimble_   (2008-05-30 21:35) [26]

> я разрабатываю форму которая подобна форме накладной,

Первое, что вспоминается из "умных книжек": создать doc иил xls файл (шаблон), со вставками вида #Edit1Text, #Edit2Text, а потом просто заменять эти вставки на нужный текст. Правда, придётся работать с офисом, но я бы лучше пошёл этим путём: если форма док-а чуть-чуть изменится, поправить doc значительно легче переставления эдитов на форме


 
Сергей М. ©   (2008-05-30 21:35) [27]


> есть другие варианты про которые я незнаю?


Миллионы оных !)


 
nimble_   (2008-05-30 21:36) [28]

> я разрабатываю форму которая подобна форме накладной,

Первое, что вспоминается из "умных книжек": создать doc иил xls файл (шаблон), со вставками вида #Edit1Text, #Edit2Text, а потом просто заменять эти вставки на нужный текст. Правда, придётся работать с офисом, но я бы лучше пошёл этим путём: если форма док-а чуть-чуть изменится, поправить doc значительно легче переставления эдитов на форме


 
Palladin ©   (2008-05-30 21:37) [29]


>ZENsan ©   (30.05.08 21:24) [16]

да ты то тут причем... с тобой в этой ветке все нормально... )


 
programmer90   (2008-05-30 21:40) [30]

Сергей М. ©  ,nimble_  
Ладно всё ясно , существует огромное кол-во вариантов, хорошо как же их осуществить может они больше подойдут мне,пжлст дайте пару примерчиков ,чтоб я понял  генераторов отчетов и про всё остальное...


 
Сергей М. ©   (2008-05-30 21:45) [31]


> programmer90   (30.05.08 21:40) [30]


http://www.fast-report.com/ru/


 
nimble_   (2008-05-30 21:45) [32]

Sorry за дубляж предыдущего поста. и-тить мой enter (

Пример? Ну вот самый примитивный примерчик для моего варианта с вордом:

var
 Word: Variant;
begin
 Word := CreateOleObject("Word.Basic");
 with Word do
 begin {Затем следуют "чистые" команды WordBASIC...}
   FileNew("Normal");
   Insert("Это первая строчка"#13);
   Insert("Это вторая строчка"#13);
   FileSaveAs("c:\temp\test.txt", 3);
 end;
end;

В Uses я не написал что надо прописать, сразу говорю)


 
programmer90   (2008-05-30 21:47) [33]

Сергей М. ©   (30.05.08 21:45) [31]
всё понятно  будем читать...


 
nimble_   (2008-05-30 21:48) [34]

Вот про замену строк в doc (http://delphiworld.narod.ru/base/msword_replace_strs.html)
Пока, думаю, хватит


 
programmer90   (2008-05-30 21:50) [35]


> Пока, думаю, хватит

Я тоже так думаю, разберемся с тем что у нас есть и будем думать что делать дальше


 
Сергей М. ©   (2008-05-30 21:50) [36]


> В Uses я не написал что надо прописать, сразу говорю


Ах ты ж - вот обидно-то !

Ценнейшее дополнение)

Хрен с ними, с "координатами" - главное чтобы uses "не парил" !)


 
nimble_   (2008-05-30 21:57) [37]

> Ах ты ж - вот обидно-то !
> Ценнейшее дополнение)


Да ComObj, ComObj :))) И хрен с ними!


 
Сергей М. ©   (2008-05-30 21:59) [38]


> Да ComObj, ComObj


А что так мало ?
А где юниты, которые сами по себе (!?) творят чудеса с координатами, которыми столь озабочен Автор ?


 
nimble_   (2008-05-30 22:14) [39]

> чудеса с координатами
Да что координаты, кординаты. Таблицу запихать туда и всё! А потом по ячейкам шагать


 
Сергей М. ©   (2008-05-30 22:21) [40]


> Таблицу запихать туда и всё! А потом по ячейкам шагать


В сад.



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

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

Наверх




Память: 0.55 MB
Время: 0.05 c
2-1212019695
Johnnnn
2008-05-29 04:08
2008.06.29
Как отключить загрузку изображений в TWebBrowser?


2-1207920040
webSQLNeederr
2008-04-11 17:20
2008.06.29
Кирилица в Memo


2-1212065961
Nick
2008-05-29 16:59
2008.06.29
Как проверить есть ли встроке пробел


3-1201096295
stud
2008-01-23 16:51
2008.06.29
композитный отчет quickreport


2-1212269187
Randew
2008-06-01 01:26
2008.06.29
Помогите найти ошибку, пожалуйста...





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