Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];

Вниз

Имитация зажатия 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.007 c
15-1255863244
POOP
2009-10-18 14:54
2009.12.13
Если в bat файле


2-1256816360
Morgan128
2009-10-29 14:39
2009.12.13
Как отследить последнее действие клавы/мыши


15-1255375330
Petr V. Abramov
2009-10-12 23:22
2009.12.13
как бороться с IE8


2-1256444215
STD
2009-10-25 07:16
2009.12.13
TIcon


15-1255362228
Alexio
2009-10-12 19:43
2009.12.13
Ошибки страниц





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский