![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имитация зажатия Shift
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.