powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как вычислить координаты ячейки в гриде
9 сообщений из 9, страница 1 из 1
как вычислить координаты ячейки в гриде
    #33580583
sv_2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
использую EhLib 3.6 и bc++ 6!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void __fastcall TForm3::DBGridEh2KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{

     if (Key == VK_RETURN && this->DBGridEh2->Col== 2 ){

        Application->CreateForm(__classid(TForm5),&Form5);
        Form5->ClientHeight= 261 ;
        Form5->ClientWidth= 187 ;
        Form5->Left= // ????? координата со смещением
        Form5->Top= //?????

        Form5->Show();

       }
}

как в вышеприведенной функции получить координаты top и left ячейки грида?
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33580769
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CellRect?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33580793
Borr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SelectedRows SelectedField не подходит?
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33580912
sv_2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изменил код следующим образом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void __fastcall TForm3::DBGridEh2KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
     if (Key == VK_RETURN && this->DBGridEh2->Col== 2 ){

        Application->CreateForm(__classid(TForm5),&Form5);
        Form5->ClientHeight= 261 ;
        Form5->ClientWidth= 187 ;
        Form5->Left=this->DBGridEh2->CellRect( 2 ,this->DBGridEh2->SelectedRows->Count).Left;
        Form5->Top= this->DBGridEh2->CellRect( 2 ,this->DBGridEh2->SelectedRows->Count).Top;
        Form5->Show();

       }
}
почему форма отображается не там где нужно, т.е. не на ячейке грида?
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33580941
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>
> Form5->Left=this->DBGridEh2->CellRect(2,this->DBGridEh2->SelectedRows->Count).Left;
> Form5->Top=
> this->DBGridEh2->CellRect(2,this->DBGridEh2->SelectedRows->Count).Top;
Чему равны:
this->DBGridEh2->SelectedRows->Count
this->DBGridEh2->CellRect(2,this->DBGridEh2->SelectedRows->Count).Left
this->DBGridEh2->CellRect(2,this->DBGridEh2->SelectedRows->Count).Top
this->DBGridEh2->Top
this->DBGridEh2->Left
Может, стоит посмотреть на ClientToScreen.

>почему форма отображается не там где нужно, т.е. не на ячейке грида?
Наверное, в твоей программе ошибка :-(.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33580962
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и на ScreenToClient тоже посмотри.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33583143
sv_2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал я и ScreenToClient и ClientToScreen форма появляется всегда в одном и том же месте в независимости от того в какой ячейки грида я нахожусь. Может тут в чем-то другом проблема?
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33583273
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне у тебя вот это:
> this->DBGridEh2->SelectedRows->Count
категорически не нравится.
Какое отношение к координатам выбранной ячейки относится количкство
выбранных строк ?
Подумай на досуге.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
как вычислить координаты ячейки в гриде
    #33584154
sv_2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо! Нужно делать вот так! Только еще что-то с преобразованием координат p=ClientToScreen(p);


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 if (Key == VK_RETURN && this->DBGridEh2->Col== 2 ){
        TPoint p;
        Application->CreateForm(__classid(TForm5),&Form5);
        Form5->ClientHeight= 261 ;
        Form5->ClientWidth= 187 ;
        p.x=this->DBGridEh2->CellRect( 2 ,this->DBGridEh2->Row).Left;
        p.y= this->DBGridEh2->CellRect( 2 ,this->DBGridEh2->Row).Top;
        p=ClientToScreen(p);
        Form5->Left= p.x;
        Form5->Top=  p.y;
        Form5->Show();

       }
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как вычислить координаты ячейки в гриде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]