Форум: "Начинающим";
Текущий архив: 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