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

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

как программно щелкнуть по элементу списка [D7, WinXP]


jsnx ©   (2007-09-26 21:25:00) 

Идея такая, вернее я ее видел у кого-то в книжке.
Необходимо программно щелкнуть по элементу списка что-бы возникло событие OnClick, в результате строковая переменная ассоциируется с таблицей в Word, а затем должно происходить добавление строк этой таблицы.
 Пробовал вариант когда на отдельной форме рсположен ListBox и кнопка, listBox заполняется списком таблиц документа Word, а по щелчку на кнопке добавляется строка.
 Я бы хотел повесить все это на кнопку, т.е. по нажатии в таблицу ворда добавляется столько строк, сколько в DBGrid.


evvcom   (2007-10-01 14:28:00) [1]

Жжете, пацаны. Я уже под столом :-)
Эмуляция клика: [7] + ListBox.Click; этого достаточно, если обрабатывать OnClick


Denis_   (2007-09-29 16:09:00) [2]


> {RASkov} ©   (26.09.07 22:09) [3]

Круто! Я сразу подумал, что это не бред:)


Jsnx   (2007-09-27 20:22:00) [3]

Спасибо Вася, вот как я это сделал:
 
procedure TForm1.Button6Click(Sender: TObject);
 var table: variant;
     a: integer;
begin
Table1.First;
 W:=CreateOleObject('Word.Application');
 W.visible:=true;
 W.Documents.add(ExtractFileDir(Application.ExeName)+'\PAN1.dot');

 W.ActiveDocument.Range(1242,1257).Select;
 W.Selection.Text:=DateToStr(Date);

 W.ActiveDocument.Range(35,36).Select;
 W.Selection.Text:=Table1RNaimen.Value;

 ListBox1.Items.Clear;
 for a:=1 to W.ActiveDocument.tables.Count do
     begin
       ListBox1.Items.Add('Таблица- '+intToStr(a));
     end;
  ListBox1.Selected[1]:=true;
  table:=W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1);
  table.rows.add;
  end;

Сдесь после нажатия кнопки создается объект ворда на основе шаблона, в который в определенные области вставляется сис. дата и значение поля таблицы, в список ListBox1 заносятся список таблиц в шаблоне, затем выбирается вторая таблица и к ней в конец добавляется пустая строка.
Правда пока не доделал, что бы количество строк соответствовало количеству записей в Table1, но ет легко.
Мож кому полезно будет сие творение.


Вася Правильный   (2007-09-27 10:58:00) [4]

ListBox.SelectedIndex:=10


DVM   (2007-09-26 22:28:00) [5]


> В общем надо добавить в вордовскую таблицу столько строк
> сколько их в DBGrid. И все это должно происходить по нажатию
> кнопки.

И в чем сложность? Это элементарно же.


{RASkov}   (2007-09-26 22:17:00) [6]

> [4] Jsnx   (26.09.07 22:12)

Лучше не стало.
Имею ввиду [0] и [4]... :(


Jsnx   (2007-09-26 22:12:00) [7]

Да перемудрил трохец. В общем надо добавить в вордовскую таблицу столько строк сколько их в DBGrid. И все это должно происходить по нажатию кнопки.


{RASkov}   (2007-09-26 22:09:00) [8]

procedure ЩёлкПо(var ЭлементСписка: ТЭлементСписка);
begin
 ShowMessage('Я, '+ЭлементСписка.Name+', заявляю, что по мне только что щёлкнули');
end;

procedure TForm1.Button3Click(Sender: TObject);
var ЭлСпск: ТЭлементСписка;
begin
 ЭлСписок:=ТЭлементСписка.Create;
 ЭлСписок.Name:='Списка элемент';
  ЩёлкПо(ЭлСписок); //Вот тут-то мы по нему и щелкнем
 ЭлСписок.Free;
end;



> [0] jsnx   (26.09.07 21:25)

Это не бред. Просто в [0] так подробно и понятно все написано....


Kolan   (2007-09-26 21:50:00) [9]

Мда задача усложняется с каждой строкой поста по экспоненциальному закону…


engine   (2007-09-26 21:38:00) [10]

> [0] jsnx   (26.09.07 21:25)
> программно щелкнуть по элементу списка что-бы возникло событие
> OnClick


Иди поспи лучше. А завтра, протрезвев, объяснишь чего у тебя не получается.


Наверх

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