Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.13;
Скачать: CL | DM;

Вниз

Имитация зажатия Shift   Найти похожие ветки 

 
Max1   (2009-10-27 11:34) [0]

Добрый день мастера. пишу прогу, в которой хочу програмно выделить слово в 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, слово конечно выделится, но кнопка останется зажатой.


 
Leonid Troyanovsky ©   (2009-10-27 11:51) [1]


> Max1   (27.10.09 11:34)  

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

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

> for ii:=1 to 10 do

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

--
Regards, LVT.


 
MonoLife ©   (2009-10-27 11:55) [2]

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


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

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


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


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

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


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

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


 
brother ©   (2009-10-27 12:15) [6]

> 2 в 1  )

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


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

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


 
Dennis I. Komarov ©   (2009-10-27 12:48) [8]


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

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

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

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


 
AIK ©   (2009-10-27 12:54) [9]

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

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


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


> Viktor   (27.10.09 12:08) [4]

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

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

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

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

--
Regards, LVT.


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

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

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

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


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

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

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


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

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


 
Amoeba ©   (2009-10-27 14:15) [13]


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

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


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


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


Тебе нужна от рисовка слов?
Если тебе нужно забрать тексты из строк 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;


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

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


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

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


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

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


 
Dennis I. Komarov ©   (2009-10-27 16:13) [18]

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


 
Viktor   (2009-10-27 16:54) [19]

А что в [10]? Я чето не вкурил. SelStart SelLength не подходит к гриду


 
Dennis I. Komarov ©   (2009-10-27 16:59) [20]

Плохо...
или как там, "Больно слышать" (С) ИШ


 
sniknik ©   (2009-10-27 17:05) [21]

> SelStart SelLength не подходит к гриду
а там и не сказано что их применяют к гриду, не выдумывай.


 
Viktor   (2009-10-27 19:37) [22]

InplaceEdit? Вы можете нормально объяснить? 20 ответов, а тема все еще открыта.


 
Leonid Troyanovsky ©   (2009-10-27 19:56) [23]


> Viktor   (27.10.09 19:37) [22]

> InplaceEdit? Вы можете нормально объяснить?

А спросить нормально можно?
Чего было непонятного в 20 постах?

--
Regards, LVT.


 
Viktor   (2009-10-27 20:53) [24]

Не ну а как еще в гриде выделить слово. Только эмуляцией нажатия клавиши, правда? А эта эмуляция глючит. Либо шифт не зажимается либо зажимается так, что его не отжать.


 
sniknik ©   (2009-10-27 21:22) [25]

> 20 ответов, а тема все еще открыта.
хочешь закрою? какие проблемы...

вообще что за идиотское поверье в инете (не раз встречаю) что тема закрывается когда решит, что решил вопрос... еще и указания модераторам дают... (типа "все решил вопрос, тему можно закрывать", это вместо того чтобы рассказать как решил, во первых другим полезно, во вторых глядишь и в этом "окончательном" решении глюки найдут...)


 
Leonid Troyanovsky ©   (2009-10-27 21:22) [26]


> Viktor   (27.10.09 20:53) [24]


> Не ну а как еще в гриде выделить слово.

В гриде слов нет, но есть ячейки. Ячейки можно выделять.
В ячейках, возможно, есть и слова. Выделить слова можно в
TInplaceEdit, если он (грид) есть goEditing и после ShowEditor.

> нажатия клавиши, правда?

Утверждение ложное.

> А эта эмуляция глючит. Либо шифт
> не зажимается либо зажимается так, что его не отжать.

Зажимается or не зажимается - судить трудно.
Все зависит, IMHO, от крутизны линейности рук и
от ловкости пальцев.

--
Regards, LVT.


 
sniknik ©   (2009-10-27 21:26) [27]

> Не ну а как еще в гриде выделить слово.
сколько раз повторить чтобы дошло? читай [10]. можешь наизусть выучить...

> Только эмуляцией нажатия клавиши, правда?
не правда!


 
Amoeba ©   (2009-10-27 21:42) [28]

http://gunsmoker.blogspot.com/2008/10/x-y-z.html


 
{RASkov} ©   (2009-10-28 01:12) [29]

> [24] Viktor   (27.10.09 20:53)
> Не ну а как еще в гриде выделить слово

в гриде слова не выделяются, можно конечно в OnDraw... выделять, там вообще все что угодно можно делать...
Можно выделить слово в InplaceEdit, но тут точно не нужны ни какие эмуляции нажатия клавишь...
Хотя тут уже об этом сказано было, только до автора не доходит...

> [22] Viktor   (27.10.09 19:37)
> Вы можете нормально объяснить? 20 ответов, а тема все еще открыта.

сначало сам объясни нормально что же тебе хочется, выделить слово в гриде или в InplaceEdit"оре?


 
Dennis I. Komarov ©   (2009-10-28 10:28) [30]

Да уже всем давно понятно, чего ему требуется, только автор никак [10] не усвоит...


 
Viktor   (2009-10-28 14:25) [31]

Я не сталкивался с InplaceEdit, поэтому не пойму [10]. Как он с гридом связан?


 
Amoeba ©   (2009-10-28 14:38) [32]


> Viktor   (28.10.09 14:25) [31]
>
> Я не сталкивался с InplaceEdit, поэтому не пойму [10]. Как
> он с гридом связан?
>

Смотри исходники TCustomGrid и тогда поймешь.


 
Leonid Troyanovsky ©   (2009-10-28 15:35) [33]


> Viktor   (28.10.09 14:25) [31]

> Я не сталкивался с InplaceEdit, поэтому не пойму [10]. Как
> он с гридом связан?

type THackGrid = class(TStringGrid);

THackGrid(StringGrid).InplaceEditor

Существует после ShowEditor (и после того, как грид получил парента).

--
Regards, LVT.


 
Viktor   (2009-10-28 16:10) [34]

То есть через InplaceEditor задавать SelStart, SelLength?


 
Dennis I. Komarov ©   (2009-10-28 16:14) [35]


> Viktor   (28.10.09 16:10) [34]
> То есть через InplaceEditor задавать SelStart, SelLength?
>

А я думаю, чего у нас снег пошел....


 
Leonid Troyanovsky ©   (2009-10-28 16:15) [36]


> Viktor   (28.10.09 16:10) [34]

> То есть через InplaceEditor задавать SelStart, SelLength?

Да.
Мог и в справке прочитать.
VCL Reference: TInplaceEdit

--
Regards, LVT.


 
Viktor   (2009-10-28 16:30) [37]

Спасибо мастера. Наконец дошло. Я просто в прошлый раз спрашивал можно ли в гриде выделить слово, говорят нет, мол, пробуй закрашивать.


 
Dennis I. Komarov ©   (2009-10-29 08:33) [38]


> говорят нет, мол, пробуй закрашивать.

Не верь всему...



Страницы: 1 вся ветка

Текущий архив: 2009.12.13;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.015 c
2-1256195080
JS2
2009-10-22 11:04
2009.12.13
Группировка записей в НД


2-1256647118
И. Павел
2009-10-27 15:38
2009.12.13
Определения щелчка на Серых полях в StringGrid


15-1255679649
pavel_guzhanov
2009-10-16 11:54
2009.12.13
Существует ли литература на русском языке


2-1256729336
Morgan128
2009-10-28 14:28
2009.12.13
Как отследить действия над сторонним окном?


4-1225167683
Danger
2008-10-28 07:21
2009.12.13
ждать завершения explorer