Форум: "Начинающим";
Текущий архив: 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]
> Таблицу запихать туда и всё! А потом по ячейкам шагать
В сад.
← →
nimble_ (2008-05-30 22:38) [41]> В сад.
Хря! © Боря Моисеев
Да простит меня В. Корняков :)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_ (2008-05-30 22:39) [42]Вышибло:
public
{ Public declarations }
W:variant;
end;
В юзисах ничего не надо делать.
← →
Сергей М. © (2008-05-30 22:49) [43]
> nimble_ (30.05.08 22:38) [41]
Ну и к чему это "кодоблудие" ?)
И где здесь какие-то там "координаты" ? Особливо применительно к конкретному принт-дивайсу, которому не посчастливится это "кодоблудие" печатать ?
← →
nimble_ (2008-05-30 22:58) [44]> Ну и к чему это "кодоблудие" ?)
> И где здесь какие-то там "координаты" ?
Что теперь не так?
Вот что хотел автор:Как вы поняли 23 едита это есть места для набора текста. на самом деле, надо не только "попасть" чтобы координаты на форме, соответствовали бы на бумажке. Код поучился достаточно большим, так как кроме "попадания",нужно ещё облегчить труд а не усложнять.
Там есть пару полей для ввода имен, всёго имен 15, это наши производители, я сделал так от 1-15 набираем и автоматически кэпшну присваивается соот. цифре имя, это ещё цветочки
Итак. что мы делаем?
1) Сканируем "бумажку" и забиваем изображение с пустыми полями в Word ЛИБО открываем в ворде документ-бумажку (электронный вариант).
2) Для скана: Поверх "нарисованных полей" натягиваем таблицу, либо "Надписи" (на панельке рисование). Для документа вообще ещё меньше работы, там уже есть готовые поля, где текст надо списывать (ну а если всё-таки их нет, то также натягиваем на них)
3) Забиваем в поля текст-шаьлон (например. в поле ФИО забиваем ###ФИО&)
4) Сохраняем документ
5) Открываем его в проге, программно забиваем поля нужными данными, сохраняем как, закрываем, открываем снова и т.д.
В итоге всю адскую работу выполняем за 5-10 минут (около 150-500 экземпляров)
← →
Сергей М. © (2008-05-30 23:05) [45]
> nimble_ (30.05.08 22:58) [44]
Автор не говорил, что ему нужно "попасть в поля готового бланка".
А если и нужно, и тем более бланки на вес золота, то НИ В КОЕМ СЛУЧАЕ нельзя полагаться на предложенную тобой технологию.
← →
nimble_ (2008-05-30 23:13) [46]> то НИ В КОЕМ СЛУЧАЕ нельзя полагаться на предложенную тобой
> технологию.
Реально? Что самое интересное, этот способ помог мне выполнить титаническую работу.
Было штук 250 грамот. Уже с отпечатанными _____ (предназначались для ручного заполнения)
Мне нужно было написать ФИО, номинацию и ещё подпись поставить (в смысле не саму подпись, а только расшифровку подписи, буквами. Подпись ставилась вручную :)
Вот именно, что я растянул поверх этих полей объекты "Надпись" в ворде. Правда, на основе нескольких бланков пришлось вычислить среднее арифметическое расположение текста в строчке (вертикальное)
Забил фамилии в стринггрид, номинации туда же. Запустил программку. За 20 минут управился (с паузами, ибо страшновато было, что получится). В итоге, испортились только два бланка: один зажевал принтер, а на другом строчки были криво отпечатаны, и мой текст не вписался в них. Остальные 248 грамот успешно напечатались с первого раза!
Ну, грамоты запасные были, те две допечатали потом. Так что не знаю, можно или нет полагаться, но она РАБОТАЕТ
← →
programmer90 (2008-05-30 23:21) [47]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_ это скопипейстил , а потом что?
← →
Сергей М. © (2008-05-30 23:24) [48]
> скопипейстил , а потом что?
> nimble_ (30.05.08 23:13) [46]
Вот тебе и результат)
← →
nimble_ (2008-05-30 23:32) [49]> скопипейстил , а потом что?
Я нажимал F9)
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.052 c