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

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

Имитация зажатия Shift


Страницы:   1 2

Max1 ©   (2009-10-27 11:34:00) 

Добрый день мастера. пишу прогу, в которой хочу програмно выделить слово в StringGride:            

             keybd_event(VK_SHIFT, 0, 0, 0);
               for ii:=1 to 10 do
                 begin
                   keybd_event(VK_RIGHT, 0, 0, 0);
                   keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0);
                 end;
               keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

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


Dennis I. Komarov   (2009-10-27 16:13:00) [21]

Так и не внял моему совету...


Viktor   (2009-10-27 15:36:00) [22]

В какой ячейке грида или в каком эдите найденое слово находится прога знает.


Viktor   (2009-10-27 15:31:00) [23]

То есть как в [0]


Viktor   (2009-10-27 15:26:00) [24]

Amoeba, спасибо, полезный совет на будущее.
Leonid Troyanovsky пользователь вводит одно или несколько слов в строку поиска нажимает найти. Далее прога ищет и если найдет, то показывает где нашла это слово или предложение. По этому я и выделяю в эдите через SelStar, SelLength, a в гриде как в [1].


AIK   (2009-10-27 14:26:00) [25]


> выделять надо отдельное слово, а не всю ячейку.


Тебе нужна от рисовка слов?
Если тебе нужно забрать тексты из строк StringGrid'а то нет никаких проблем можно куда проще

var
s: TStringList;
ii: Integer;
begin
 s:= TStringList.Create;
 for ii:=1 to 10 do
    s.Add(StringGrid1.Cells[ii, 1]);
…
s.free;
end;


Amoeba   (2009-10-27 14:15:00) [26]


> в Грид вывожу, чтобы не парится с SQL запрсами, т. к. данные
> полей надо выводить в строки, а не в столбцы

Тогда выводи в NXDBGrid, позволяющий отображать Dataset в транспонированном виде (столбцы в строках):
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=529


Dennis I. Komarov   (2009-10-27 14:06:00) [27]

Читай [10] еще раз...


Viktor   (2009-10-27 13:47:00) [28]

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

> StringGrid1.Selection := TGridRect(rect(1, 1, 2, 2));
>

выделять надо отдельное слово, а не всю ячейку.


> Ну, а программно выделять это SelStart, SelLength

в эдитах я так и делаю

кароче подскажите как выделить слово, что не так я написал в том коде.


Leonid Troyanovsky   (2009-10-27 13:06:00) [29]


> Viktor   (27.10.09 12:08) [4]

> зажимаем Shift, нажимаем i-раз -> , отпускаем Shift.

Во-ще-то, в стандартном EDIT - Ctrl+Left карет в начало слова,
Ctrl+Shift+Right выделить до следующего слова.

Ну, а программно выделять это SelStart, SelLength, бо
InplaceEdit is TEdit.

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

--
Regards, LVT.


AIK   (2009-10-27 12:54:00) [30]

Если только выделить ячейки(синим таким цветом) без горячих клавиш то вот

StringGrid1.Selection := TGridRect(rect(1, 1, 2, 2));


Dennis I. Komarov   (2009-10-27 12:48:00) [31]


> моя прога выводит данные из бд в StringGrid.

извращение раз...

> при поиске надо выделить слово. проще это сделать имитацией
> нажатия клавиши

два. Если это проще, то откуда взялся [0]?


Viktor   (2009-10-27 12:33:00) [32]

на разных компах сижу имя забыл поменять


brother   (2009-10-27 12:15:00) [33]

> 2 в 1  )

а по правилам форума, это запрещено.


Viktor   (2009-10-27 12:11:00) [34]

тоесть я не Viktor а Max1.  2 в 1  )


Viktor   (2009-10-27 12:08:00) [35]

выделяем так:
зажимаем Shift, нажимаем i-раз -> , отпускаем Shift.


Viktor   (2009-10-27 12:04:00) [36]

моя прога выводит данные из бд в StringGrid. при поиске надо выделить слово. проще это сделать имитацией нажатия клавиши
> > for ii:=1 to 10 do


это я к примеру. на самом деле
for ii:=1 to Length(mas_search[tek_slovo])


MonoLife   (2009-10-27 11:55:00) [37]

Может автор хочет просто, программно выделить слово в ячейке? Или все же "нажать" shift?


Leonid Troyanovsky   (2009-10-27 11:51:00) [38]


> Max1   (27.10.09 11:34)  

> в итоге слово не выделяется

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

> for ii:=1 to 10 do

А чего это сразу 10?

--
Regards, LVT.


Страницы:   1 2

Наверх

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