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

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

Одинаковое значение свойств у всех Edit-ов [XP]


Страницы:   1 2 3

programmer90 ©   (2008-05-30 19:04:00) 

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


nimble_   (2008-05-30 23:32:00) [1]

> скопипейстил , а потом что?

Я нажимал F9)


Сергей М.   (2008-05-30 23:24:00) [2]


> скопипейстил , а потом что?



> nimble_   (30.05.08 23:13) [46]


Вот тебе и результат)


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

procedure TForm1.Button11Click(Sender: TObject);
var table_:variant;
Row_,Column_:integer;
begin
// Создаеем новый документ по шаблону
W.documents.Add(ExtractFileDir(Application.ExeName)+'\Шаблон счета-фактуры.dot');

messagebox(handle,'Шаблон создан! Переходим к заполнению.','Внимание!',0);

// Подставляем тектс в заголовок документа
FindAndInsert('###НОМЕР&','1');
FindAndInsert('###Дата&',datetostr(date));
FindAndInsert('###ПРОДАВЕЦ&','ЗАО Сокол');
FindAndInsert('###АДРЕС_ПРОДАВЦА&','г. Санкт-Петербург, ул. Кузнечная 5');
FindAndInsert('###ИНН_ПРОДАВЦА&','1234567890');
FindAndInsert('###ГРУЗООТПРАВИТЕЛЬ&','ЗАО Сокол');
FindAndInsert('###ГРУЗОПОЛУЧАТЕЛЬ&','ЗАО Селена');
FindAndInsert('###ДОКУМЕНТ&','1');
FindAndInsert('###ДАТА_ДОКУМЕНТА&',datetostr(date));
FindAndInsert('###ПОКУПАТЕЛЬ&','ЗАО Селена');
FindAndInsert('###АДРЕС_ПОКУПАТЕЛЯ&','г. Москва, ул. Комаровского 41');
FindAndInsert('###ИНН_ПОКУПАТЕЛЯ&','0987654321');

// Если нашлли текстовую константу, то переходим к формированию табличной части
if FindRowColumnInTable('###ТАБЛИЦА&',table_,Row_,Column_)then begin
// Перед началом формирования курсор находится в таблице table_ в ячейке Cell(Row_,Column_)
// Добавляем в талицу необходимое количество строк - 1, так как одна строка в шаблоне уже есть
W.Selection.InsertRows(2-1);

// Формируем первую строку табличной части документа
table_.Cell(Row_,Column_+0).Range.Text:='KOVRIC TRIVEL RUG';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text:='1';
table_.Cell(Row_,Column_+3).Range.Text:='342,00';
table_.Cell(Row_,Column_+4).Range.Text:='342,00';
table_.Cell(Row_,Column_+6).Range.Text:='20,00';
table_.Cell(Row_,Column_+7).Range.Text:='68,40';
table_.Cell(Row_,Column_+8).Range.Text:='410,40';

Inc(Row_);

// Формируем вторую строку табличной части документа
table_.Cell(Row_,Column_+0).Range.Text:='НИТЬ Climax Braided 100m 0,16mm';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text:='2';
table_.Cell(Row_,Column_+3).Range.Text:='309,08';
table_.Cell(Row_,Column_+4).Range.Text:='618,16';
table_.Cell(Row_,Column_+6).Range.Text:='20,00';
table_.Cell(Row_,Column_+7).Range.Text:='123,63';
table_.Cell(Row_,Column_+8).Range.Text:='741,79';

// Формируем подпись табличной части документа
if FindRowColumnInTable('###ИТОГ&',table_,Row_,Column_)then begin
 table_.Cell(Row_,Column_+0).Range.Text:='960,16';
 table_.Cell(Row_,Column_+1).Range.Text:='192,03';
 table_.Cell(Row_,Column_+2).Range.Text:='1152,19';
 end;
end;
// Заполняем текст в окончании документа
FindAndInsert('###ВСЕГО_К_ОПЛАТЕ&','Одна тысяча сто пятьдесят два  рубля 19 копеек');
end;

// Функция находит текстовую константу и подставляет на ее место текст
Function FindAndInsert(FindText,ReplacementText:string):boolean;
const wdReplaceAll=2;
begin
Form1.W.Selection.Find.Text:=FindText;
Form1.W.Selection.Find.Replacement.Text:=ReplacementText;
FindAndInsert:=Form1.W.Selection.Find.Execute(Replace:=wdReplaceAll);
End;

// Функция находит текстовую константу и возвращает таблицу, а также номер строки и столбца
// где находится эта константа
Function FindRowColumnInTable(FindText:string;var tab:variant; var Row,Column:integer):boolean;
begin
FindRowColumnInTable:=false;
try
Form1.W.Selection.Find.Text:=FindText;
if Form1.W.Selection.Find.Execute then begin
 Column:=Form1.W.Selection.Cells.Item(1).ColumnIndex;
 Row:=Form1.W.Selection.Cells.Item(1).RowIndex;
 tab:=Form1.W.Selection.Tables.Item(1);
 FindRowColumnInTable:=true;
end;
except
FindRowColumnInTable:=false;
end;
End; -nimble_  это  скопипейстил , а потом что?


nimble_   (2008-05-30 23:13:00) [4]

> то НИ В КОЕМ СЛУЧАЕ нельзя полагаться на предложенную тобой
> технологию.

Реально? Что самое интересное, этот способ помог мне выполнить титаническую работу.
Было штук 250 грамот. Уже с отпечатанными _____ (предназначались для ручного заполнения)
Мне нужно было написать ФИО, номинацию и ещё подпись поставить (в смысле не саму подпись, а только расшифровку подписи, буквами. Подпись ставилась вручную :)

Вот именно, что я растянул поверх этих полей объекты "Надпись" в ворде. Правда, на основе нескольких бланков пришлось вычислить среднее арифметическое расположение текста в строчке (вертикальное)

Забил фамилии в стринггрид, номинации туда же. Запустил программку. За 20 минут управился (с паузами, ибо страшновато было, что получится). В итоге, испортились только два бланка: один зажевал принтер, а на другом строчки были криво отпечатаны, и мой текст не вписался в них. Остальные 248 грамот успешно напечатались с первого раза!

Ну, грамоты запасные были, те две допечатали потом. Так что не знаю, можно или нет полагаться, но она РАБОТАЕТ


Сергей М.   (2008-05-30 23:05:00) [5]


> nimble_   (30.05.08 22:58) [44]


Автор не говорил, что ему нужно "попасть в поля готового бланка".

А если и нужно, и тем более бланки на вес золота, то НИ В КОЕМ СЛУЧАЕ нельзя полагаться на предложенную тобой технологию.


nimble_   (2008-05-30 22:58:00) [6]

> Ну и к чему это "кодоблудие" ?)
> И где здесь какие-то там "координаты" ?

Что теперь не так?

Вот что хотел автор:
Как вы поняли 23 едита это есть места для набора текста. на самом деле, надо не только "попасть" чтобы координаты на форме, соответствовали бы на бумажке. Код поучился достаточно большим, так как кроме "попадания",нужно ещё облегчить труд а не усложнять.
Там есть пару полей для ввода имен, всёго имен 15, это наши производители, я сделал так от 1-15  набираем и автоматически кэпшну присваивается соот. цифре имя, это ещё цветочки


Итак. что мы делаем?
1) Сканируем "бумажку" и забиваем изображение с пустыми полями в Word ЛИБО открываем в ворде документ-бумажку (электронный вариант).
2) Для скана: Поверх "нарисованных полей" натягиваем таблицу, либо "Надписи" (на панельке рисование). Для документа вообще ещё меньше работы, там уже есть готовые поля, где текст надо списывать (ну а если всё-таки их нет, то также натягиваем на них)
3) Забиваем в поля текст-шаьлон (например. в поле ФИО забиваем ###ФИО&)
4) Сохраняем документ
5) Открываем его в проге, программно забиваем поля нужными данными, сохраняем как, закрываем, открываем снова и т.д.

В итоге всю адскую работу выполняем за 5-10 минут (около 150-500 экземпляров)


Сергей М.   (2008-05-30 22:49:00) [7]


> nimble_   (30.05.08 22:38) [41]


Ну и к чему это "кодоблудие" ?)
И где здесь какие-то там "координаты" ? Особливо применительно к конкретномупринт-дивайсу, которому не посчастливится это "кодоблудие" печатать ?


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

Вышибло:
 public
   { Public declarations }
 W:variant;
 end;


В юзисах ничего не надо делать.


nimble_   (2008-05-30 22:38:00) [9]

> В сад.
Хря! © Боря Моисеев

Да простит меня В. Корняков :)

procedure TForm1.Button11Click(Sender: TObject);
var table_:variant;
Row_,Column_:integer;
begin
// Создаеем новый документ по шаблону
W.documents.Add(ExtractFileDir(Application.ExeName)+'\Шаблон счета-фактуры.dot');

messagebox(handle,'Шаблон создан! Переходим к заполнению.','Внимание!',0);

// Подставляем тектс в заголовок документа
FindAndInsert('###НОМЕР&','1');
FindAndInsert('###Дата&',datetostr(date));
FindAndInsert('###ПРОДАВЕЦ&','ЗАО Сокол');
FindAndInsert('###АДРЕС_ПРОДАВЦА&','г. Санкт-Петербург, ул. Кузнечная 5');
FindAndInsert('###ИНН_ПРОДАВЦА&','1234567890');
FindAndInsert('###ГРУЗООТПРАВИТЕЛЬ&','ЗАО Сокол');
FindAndInsert('###ГРУЗОПОЛУЧАТЕЛЬ&','ЗАО Селена');
FindAndInsert('###ДОКУМЕНТ&','1');
FindAndInsert('###ДАТА_ДОКУМЕНТА&',datetostr(date));
FindAndInsert('###ПОКУПАТЕЛЬ&','ЗАО Селена');
FindAndInsert('###АДРЕС_ПОКУПАТЕЛЯ&','г. Москва, ул. Комаровского 41');
FindAndInsert('###ИНН_ПОКУПАТЕЛЯ&','0987654321');

// Если нашлли текстовую константу, то переходим к формированию табличной части
if FindRowColumnInTable('###ТАБЛИЦА&',table_,Row_,Column_)then begin
// Перед началом формирования курсор находится в таблице table_ в ячейке Cell(Row_,Column_)
// Добавляем в талицу необходимое количество строк - 1, так как одна строка в шаблоне уже есть
W.Selection.InsertRows(2-1);

// Формируем первую строку табличной части документа
table_.Cell(Row_,Column_+0).Range.Text:='KOVRIC TRIVEL RUG';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text:='1';
table_.Cell(Row_,Column_+3).Range.Text:='342,00';
table_.Cell(Row_,Column_+4).Range.Text:='342,00';
table_.Cell(Row_,Column_+6).Range.Text:='20,00';
table_.Cell(Row_,Column_+7).Range.Text:='68,40';
table_.Cell(Row_,Column_+8).Range.Text:='410,40';

Inc(Row_);

// Формируем вторую строку табличной части документа
table_.Cell(Row_,Column_+0).Range.Text:='НИТЬ Climax Braided 100m 0,16mm';
table_.Cell(Row_,Column_+1).Range.Text:='шт';
table_.Cell(Row_,Column_+2).Range.Text:='2';
table_.Cell(Row_,Column_+3).Range.Text:='309,08';
table_.Cell(Row_,Column_+4).Range.Text:='618,16';
table_.Cell(Row_,Column_+6).Range.Text:='20,00';
table_.Cell(Row_,Column_+7).Range.Text:='123,63';
table_.Cell(Row_,Column_+8).Range.Text:='741,79';

// Формируем подпись табличной части документа
if FindRowColumnInTable('###ИТОГ&',table_,Row_,Column_)then begin
  table_.Cell(Row_,Column_+0).Range.Text:='960,16';
  table_.Cell(Row_,Column_+1).Range.Text:='192,03';
  table_.Cell(Row_,Column_+2).Range.Text:='1152,19';
  end;
end;
// Заполняем текст в окончании документа
FindAndInsert('###ВСЕГО_К_ОПЛАТЕ&','Одна тысяча сто пятьдесят два  рубля 19 копеек');
end;

// Функция находит текстовую константу и подставляет на ее место текст
Function FindAndInsert(FindText,ReplacementText:string):boolean;
const wdReplaceAll=2;
begin
Form1.W.Selection.Find.Text:=FindText;
Form1.W.Selection.Find.Replacement.Text:=ReplacementText;
FindAndInsert:=Form1.W.Selection.Find.Execute(Replace:=wdReplaceAll);
End;

// Функция находит текстовую константу и возвращает таблицу, а также номер строки и столбца
// где находится эта константа
Function FindRowColumnInTable(FindText:string;var tab:variant; var Row,Column:integer):boolean;
begin
FindRowColumnInTable:=false;
try
Form1.W.Selection.Find.Text:=FindText;
if Form1.W.Selection.Find.Execute then begin
  Column:=Form1.W.Selection.Cells.Item(1).ColumnIndex;
  Row:=Form1.W.Selection.Cells.Item(1).RowIndex;
  tab:=Form1.W.Selection.Tables.Item(1);
  FindRowColumnInTable:=true;
end;
except
FindRowColumnInTable:=false;
end;
End;


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


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


В сад.


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

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


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


> Да ComObj, ComObj


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


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

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


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


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


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


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

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

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


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


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

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


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

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


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

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


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

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

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

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

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


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


> programmer90   (30.05.08 21:40) [30]


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


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

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


Страницы:   1 2 3

Наверх

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