как можно взять данные из DBGrid,зная handle

 
0
 
Delphi, Kylix and Pascal
ava
Lunatikus | 19.05.2008, 16:14
собственно,в этом вопрос.С помощью винспая узнал handle DBGrid'a в виде 0х12345.Как это может помочь получить данные из грида,а также сдвигать текущую запись?
Очень нуждаюсь в вашей помощи.Спасибо за внимание.
Ответы (15)
ava
CompWorm | 19.05.2008, 16:17 #
я создавал тему по обычному гриду, мы сошлись на том, что цифры попросту рисованые на канвасе, а реальные значения переменных хранятся где-то в оперативке...

короче, уже год тема открыта...
думаю, в ДБгриде тоже самое smile
ava
Lunatikus | 19.05.2008, 16:57 #
а как хотя бы поставить фокус на грид и сэмулировать движение по таблице вниз?как сэмулировать нажатие,в принципе,в ДРКБ написано,разберусь.А вот как установить фокус на данный грид,чтобы при нажатии клавиши "вниз" происходил сдвиг.
ava
ama_kid | 20.05.2008, 07:58 #
Цитата (Lunatikus @ 19.5.2008, 16:57 findReferencedText)
как установить фокус на данный грид
Гипотетически - AttachThreadInput, затем SetFocus. Практически - не пробовал... smile
ava
Lunatikus | 20.05.2008, 12:05 #
пните тогда,где посмотреть про потоки,ибо я в этом деле даже не пробегал.
ava
Lunatikus | 20.05.2008, 12:37 #
а в каком виде использовать параметр HWND,например, в функции SetFocus?Просто,К примеру,мне винспай выдал handle=0x12345 .Как я его должен вписать в виде параметра в функцию?
ava
ama_kid | 20.05.2008, 13:19 #
Цитата (Lunatikus @ 20.5.2008, 12:05 findReferencedText)
пните тогда,где посмотреть про потоки,ибо я в этом деле даже не пробегал.
Пробегай пока дальше, здесь потоки не причем... smile Но если сильно хочется - смотреть сюда...

Цитата (Lunatikus @ 20.5.2008, 12:37 findReferencedText)
а в каком виде использовать параметр HWND,например, в функции SetFocus?Просто,К примеру,мне винспай выдал handle=0x12345 .Как я его должен вписать в виде параметра в функцию?
SetFocus просто так не работает с окнами, которые не принадлежат текущему потоку (смотри описание, которое я дал). Поэтому сначала надо подсоединиться к этому потоку через AttachThreadInput, об этом как раз там же и написано. Как сделать - думаю поиск поможет, сам не делал... И вот только потом можно использовать SetFocus, передавая хендл твоего окна, полученный из spy...
ava
Lunatikus | 20.05.2008, 13:43 #
я и не собирался просто так использовать setfocus.Имею в виду,как после установки данного элемента в текущий поток,передать сетфокусу хендл?просто в виде строки "0х12345"?
ava
ama_kid | 20.05.2008, 13:46 #
зачем строки? smile числом и передавай!...
ava
Lunatikus | 20.05.2008, 13:52 #
SetFocus(0x12345)?
почему тогда компилятор ругается?=(

"missing operator or semicolon"
ava
ama_kid | 20.05.2008, 13:56 #
Цитата (Lunatikus @ 20.5.2008, 13:52 findReferencedText)
почему тогда компилятор ругается?
наверное, потому что 0x - это некорректный синтаксис, ибо 16-ричное число пишется так: $FF...

ava
Lunatikus | 20.05.2008, 13:59 #
отлично.первый раз в первый класс.
правила перевода не напомните?...хотя,сам попробую поищу.

я так понял,шестнадцатиричной будет часть после "0х"?Т.е. в моем примере,это число 12345.

Добавлено позднее:
функция SetFocus на любой параметр внутри ругается "too many actual parameters".если пусто,не ругается.
ava
ama_kid | 20.05.2008, 14:14 #
Цитата (Lunatikus @ 20.5.2008, 13:59 findReferencedText)
функция SetFocus на любой параметр внутри ругается "too many actual parameters".если пусто,не ругается.
Ты, небось, внутри обработчика формы пытаешься его вызвать? А внутри обработчика действует метод SetFocus класса TCustomForm... Тебе же надо вызвать WinAPI-шный вариант:
Windows.SetFocus($12345);

ava
Lunatikus | 20.05.2008, 14:22 #
вот спасибо!конечно же, я его пытался так и вызвать...
ava
CompWorm | 22.05.2008, 14:16 #
Lunatikus,
тема зовется "как можно взять данные из DBGrid,зная handle",
стоит галочка, что типа проблема решена, но я чет не понял, как сет фокус помог взять значение из грида? или чисто проблема была не в значениях, а в фокусе?

сорри за настойчивость, просто мне эта тема очень актуальна и сильно трет)))
ava
Lunatikus | 23.05.2008, 10:15 #
как было написнао выше,подобная тема была открыта полгода и никто не смог решить задачу.В итоге я отказался от этой темы и спросил,а как вообще можно гридом,т.е. установить на него фокус и сэмулировать нажатие клавиш.Именно это позволяет сделать SetFocus.Однако,я пока не до конца разобрался,как запихнуть грид в текущий поток,чтобы сетфокус сработал.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить