Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BDCheckGridWithCheckBoxes, o_O 
:(
    Опции темы
A5uKa
Дата 23.12.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



В DBGrid портируются настройки которые True или False
Они разные каждый раз 

и ... пользователю трудно писать True или False 

Как подойти к решению этой задачи, чтоб не через ... 
PM   Вверх
mrbrooks
Дата 23.12.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(A5uKa @  23.12.2009,  15:52 Найти цитируемый пост)
В DBGrid портируются настройки которые True или False
Они разные каждый раз 

и ... пользователю трудно писать True или False 

Как подойти к решению этой задачи, чтоб не через ...  


это перевод с японского? честно говоря не особо понятно, что надо.

попробую поюзать хрустальный шар. 
1. Поле в БД имеет булев тип?
2. Редактирование БД идет через DBGrid?
PM MAIL   Вверх
Alca
Дата 23.12.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Где-то так:
Код

//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner) : TForm(Owner) {
    //-------------------------------------
    //### DBCheckBox1 внутри DBGrid ###
    long lBs1 = GetWindowLong(dbchkApplyDoc->Handle, GWL_STYLE) | BS_FLAT | BS_MULTILINE;
    SetWindowLong(dbchkApplyDoc->Handle, GWL_STYLE, lBs1);

    dbchkApplyDoc->DataSource = dmDM->dsDocs;
    dbchkApplyDoc->DataField  = "FN_APPLY_DOC";
    dbchkApplyDoc->Visible    = false;
    dbchkApplyDoc->Color      = dbgrdDocs->Color;
    dbchkApplyDoc->Caption    = "";
 
    //explained later in the article
    dbchkApplyDoc->ValueChecked   = "Учтён";
    dbchkApplyDoc->ValueUnchecked = "Не учтён";
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::dbgrdDocsColExit(TObject *Sender) {
    //-------------------------------------
    //### DBCheckBox1 внутри DBGrid ###
    if (dbgrdDocs->SelectedField->FieldName == "FN_CREATE_DATE") {
        dbchkApplyDoc->Visible = false;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::dbgrdDocsKeyPress(TObject *Sender, char &Key) {
    //-------------------------------------
    //### DBCheckBox1 внутри DBGrid ###
    if (Key == 9) {
        return;
    }

    if (dbgrdDocs->SelectedField->FieldName == dbchkApplyDoc->DataField) {
        dbchkApplyDoc->SetFocus();
        SendMessage(dbchkApplyDoc->Handle, WM_CHAR, WORD(Key), 0);
    }
}
//---------------------------------------------------------------------------
//### DBCheckBox1 внутри DBGrid ###
void __fastcall TfrmMain::dbchkApplyDocClick(TObject *Sender) {
    if (dbchkApplyDoc->Checked) {
        dbchkApplyDoc->Caption = dbchkApplyDoc->ValueChecked;
    } else {
        dbchkApplyDoc->Caption = dbchkApplyDoc->ValueUnchecked;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::dbgrdDocsDrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) {
     //-------------------------------------
    //DBCheckBox1 внутри DBGrid
    const int iIsChecked[2] = {DFCS_BUTTONCHECK | DFCS_FLAT, DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT};

    int   DrawState;
    TRect DrawRect;
    if (State.Contains(gdFocused) == true) {
        if (Column->Field->FieldName == dbchkApplyDoc->DataField) {
            dbchkApplyDoc->Left   = Rect.Left   + dbgrdDocs->Left + 2;
            dbchkApplyDoc->Top    = Rect.Top    + dbgrdDocs->Top  + 2;
            dbchkApplyDoc->Width  = Rect.Right  - Rect.Left;
            dbchkApplyDoc->Height = Rect.Bottom - Rect.Top;
            dbchkApplyDoc->Visible = true;
        }
    } else {
        if (Column->Field->FieldName == dbchkApplyDoc->DataField) {
            DrawRect = Rect;
            InflateRect(&DrawRect, -2/*-1*/, -2/*-1*/);
            DrawState = iIsChecked[Column->Field->AsBoolean];
            dbgrdDocs->Canvas->FillRect(Rect);

            DrawFrameControl(dbgrdDocs->Canvas->Handle, &DrawRect, DFC_BUTTON, DrawState);
        }
    }     
}


Это сообщение отредактировал(а) Alca - 23.12.2009, 17:45


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 23.12.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



http://delphi.about.com/od/usedbvcl/l/aa082003a.htm

Добавлено через 1 минуту и 53 секунды
user posted image


--------------------
PM WWW ICQ Skype Jabber   Вверх
A5uKa
Дата 24.12.2009, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



ну не зря же есть
Цитата

хрустальный шар. 

 smile 

Цитата

Где-то так:


+ Спасибо !
PM   Вверх
A5uKa
Дата 29.12.2009, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Выплыла проблема.

Частенько из-за этой штуки идёт 
Abnormal program terminator  smile 
PM   Вверх
Alca
Дата 29.12.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



На какой строке кода падает приложение?


--------------------
PM WWW ICQ Skype Jabber   Вверх
A5uKa
Дата 30.12.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата(Alca @ 29.12.2009,  15:56)
На какой строке кода падает приложение?

на Application->Termiante();

НО думаю всё просто, ненормальный терминатор приходт только когда в дбгриде что-то есть.
PM   Вверх
A5uKa
Дата 30.12.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



p.s. Но терминатор неформал приходит до того как функции OnFormDestroy или Close будут вызваны и даже если раньше я закрою query не спасает. Нужно кроме закрытия сделать что-то с DataSource и Гридом, чтобы они отреагировали на это закрытие когда форма закрыта.
PM   Вверх
Alca
Дата 30.12.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



замени это 
Код

Application->Termiante();

на 
Код

SomeForm->Close()


Это сообщение отредактировал(а) Alca - 30.12.2009, 11:05


--------------------
PM WWW ICQ Skype Jabber   Вверх
A5uKa
Дата 30.12.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата(Alca @ 30.12.2009,  11:04)
замени это 


Злые терминаторы вылезают раньше, чем FormCloseQuery, а чтобы СПАСТИ планету от нашедствия злых терминаторов нужно очистить DBGrid но мы не можем очистить DBgrid в событие FormCloseQuery, потомучто ЗЛЫЕ ТЕРМИНАТОРЫ уже тут ! Нужно отправить Доброго терминатора в прошлое, чтобы он очистил FormCloseQuery, но для этого нужно, чтобы кто-то создал Доброго терминатора, но для этого нужно, чтобы кто-то родил того, кто создаст доброго терминатора, для этого нужно спасти Сару Коннор. Для этого нужно отправить кого-то в прошлое ! Но вот вопрос ... Когда нужно спасать Сару коннор ? ... ну или вообще ... когда очищать grid если повсюду злые терминаторы ! ©

Это сообщение отредактировал(а) A5uKa - 30.12.2009, 11:30
PM   Вверх
mrbrooks
Дата 30.12.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(A5uKa @  30.12.2009,  11:17 Найти цитируемый пост)
Злые терминаторы вылезают раньше, чем FormCloseQuery, а чтобы СПАСТИ планету от нашедствия злых терминаторов нужно очистить DBGrid но мы не можем очистить DBgrid в событие FormCloseQuery, потомучто ЗЛЫЕ ТЕРМИНАТОРЫ уже тут ! Нужно отправить Доброго терминатора в прошлое, чтобы он очистил FormCloseQuery, но для этого нужно, чтобы кто-то создал Доброго терминатора, но для этого нужно, чтобы кто-то родил того, кто создаст доброго терминатора, для этого нужно спасти Сару Коннор. Для этого нужно отправить кого-то в прошлое ! Но вот вопрос ... Когда нужно спасать Сару коннор ? ... ну или вообще ... когда очищать grid если повсюду злые терминаторы ! ©

тсс. ГНК не дремлет! трололо.


Вообще хорошим тоном было бы создать свой контрол наследуя его от TDBGrid и TDBCheckBox, в коем бы ты грамотно проработала конструктор/деструктор.


PM MAIL   Вверх
A5uKa
Дата 30.12.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата

хорошим тоном

Только в том случае, если это проще, чем найти "Сару Коннор".
PM   Вверх
A5uKa
Дата 11.1.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Встречайте   
Сара Коннор  smile 

Код

void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
        Form2->Show();
}


Только выглядит она не очень.

Кто сможет причесать её ?   smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.