powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Глюк фиксированных колонок TDBGrid в C++ Builder
15 сообщений из 15, страница 1 из 1
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594372
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал фиксированные колонки - нашёл в интернете.

((TDrawGrid*)dbgrid)->FixedCols = 3;

Вроде как работает, но если нажимаешь на такую фиксированную колонку, то происходит глюк - эта колонка просто повторяется рядом с фиксированной колонкой в виде нефиксированной колонке )))

Как избавиться от такого глюка?
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594419
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sofen.ru,

Не использовать C++ Builder ?
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594447
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНе использовать C++ Builder

Исторически сложилось, что этот проект на C++ Builder )))
Нужно добавить фиксированные колонки, неужто переписывать на чём-то другом? )
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594500
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала отхакал компонент, а потом жалуется, что он неправильно работает... TDBGrid не
даёт задать число фиксированных колонок не просто так. Переходи на TStringGrid и будет
тебе счастье.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594504
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Получается, что нужно на базе TDBGrid написать свой компонент? Может есть у кого примерчик?
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594612
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sofen.ruПолучается, что нужно на базе TDBGrid написать свой компонент?
Нет, нужно использовать TStringGrid у которого с фиксированными колонками всё в порядке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594626
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

но мнеж нужно работать с базой данных... что делать?
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594688
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sofen.ruно мнеж нужно работать с базой данных... что делать?
Писать цикл из шести строк. Программисты этим иногда занимаются, знаешь ли - пишут код...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38594768
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаешь всё выгружать в StringGrid?
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38595024
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sofen.ruПредлагаешь всё выгружать в StringGrid?
Не прошло и трёх часов, как Штирлиц догадался что ему отвечают...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38595377
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

твоя идея конечно же имеет право на жизнь, но это не интересно... зачем тогда делали специальный компонент DBGrid?
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38595437
Сисдба Мастеркеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sofen.ru пишет:

> твоя идея конечно же имеет право на жизнь, но это не интересно... зачем
> тогда делали специальный компонент DBGrid?

Штатный - фиговый. Или рисуй сам (TDrawGrid), или грузи в StringGrid, или бери вообще сторонний.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38595669
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sofen.ruзачем тогда делали специальный компонент DBGrid?
Не для того, чтобы каждый первый встречный баловался с его фиксированными колонками.
Потому и не сделали свойство FixedCols публичным.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38595689
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
//---------------------------------------------------------------------------

#ifndef myDBGridH
#define myDBGridH
#include <Classes.hpp>
#include <DBGrids.hpp>


//---------------------------------------------------------------------------
class MyDBGrid : public TDBGrid {
        int FFixedCols;
public:
    __fastcall virtual MyDBGrid(Classes::TComponent* AOwner);
    void setFixedCols(int value);
    int getFixedCols();
    DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    DYNAMIC void __fastcall KeyDown(System::Word &Key, Classes::TShiftState Shift);
};
#endif



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
//---------------------------------------------------------------------------


#pragma hdrstop

#include "myDBGrid.h"
#include <Classes.hpp>
#include <DBGrids.hpp>

//---------------------------------------------------------------------------

#pragma package(smart_init)

__fastcall MyDBGrid::MyDBGrid(Classes::TComponent* AOwner) : TDBGrid(AOwner) {
}

void MyDBGrid::setFixedCols(int value) {
        int FixedCount = value + this->IndicatorOffset;
        if (this->DataLink->Active && !(this->ComponentState.Contains(csDesigning)) &&
                (ColCount > IndicatorOffset + 1)) {
                if (FixedCount >= ColCount) FixedCount = ColCount - 1;
                FixedCols = FixedCount;

                for (int i = 1; i <= FixedCols; i++) TabStops[i] = false;
        }
        FFixedCols = FixedCount - IndicatorOffset;
}

int MyDBGrid::getFixedCols() {
        if (DataLink->Active) return FixedCols - IndicatorOffset;
        return FFixedCols;
}

void __fastcall MyDBGrid::MouseDown(TMouseButton Button, TShiftState Shift, int X, int Y) {
        TGridCoord cell = MouseCoord(X, Y);
        if (cell.X >= 0 && cell.X < FixedCols && DataLink->Active) {
                if (Options.Contains(dgIndicator)) {
                        TDBGrid::MouseDown(Button, Shift, 1, Y);
                }
                else if (cell.Y >= 1 && cell.Y - Row != 0) {
                        DataLink->DataSet->MoveBy(cell.Y - Row);
                }
        }
        else TDBGrid::MouseDown(Button, Shift, X, Y);
}

void __fastcall MyDBGrid::KeyDown(System::Word &Key, Classes::TShiftState Shift) {
        TKeyEvent KeyDownEvent = OnKeyDown;
        if (KeyDownEvent != NULL) KeyDownEvent(this, Key, Shift);

        if (!DataLink->Active || !CanGridAcceptKey(Key, Shift)) return;

        if (Shift.Contains(ssCtrl)) {
                if (Key = VK_LEFT && FixedCols > 0) {
                        SelectedIndex = FixedCols;
                        return;
                }
        }
        else switch (Key) {
                case VK_LEFT:
                        if (FixedCols > 0 && !Options.Contains(dgRowSelect))
                                if (SelectedIndex <= FFixedCols) return;
                        break;
                case VK_HOME:
                        if (FixedCols > 0 && ColCount != IndicatorOffset + 1
                                && !Options.Contains(dgRowSelect)) {
                            SelectedIndex = FixedCols;
                            return;
                        }
                        break;
        }


        OnKeyDown = NULL;

        try {
                TDBGrid::KeyDown(Key, Shift);
        }
        catch(...) {
                OnKeyDown = KeyDownEvent;
        }
}
...
Рейтинг: 0 / 0
Глюк фиксированных колонок TDBGrid в C++ Builder
    #38595690
sofen.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот выложил свой компонент... работает!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Глюк фиксированных колонок TDBGrid в C++ Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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