Поиск:

Ответ в темуСоздание новой темы Создание опроса
> показ и скрытие диалоговой формы 
V
    Опции темы
Severyanin
Дата 6.12.2008, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



мне нужно организовать простейший итератор. Есть форма и функция-член класса другой формы. мне необходимо, чтобы они крутились в цикле, вызывая друг друна по-очереди. На форме есть поля ввода, лэйблы и кнопка. Когда я все это делаю с помощью методов Show-Hide, то нормально не отображаются кнопка и эдиты, а если использую ShowModal, то на второй итерации прога валится с ошибкой "cannot show then wisible form modal", хотя предварительно эта форма скрывается.  Подскажите, пожалуйста. как мне реализовать этот фокус 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Dmi3ev
Дата 6.12.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



кусок кода посмотреть дайте.


--------------------

PM MAIL   Вверх
586
Дата 6.12.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 57
Всего: 146



Цитата(Severyanin @  6.12.2008,  08:50 Найти цитируемый пост)
а если использую ShowModal, то на второй итерации прога валится с ошибкой "cannot show then wisible form modal", хотя предварительно эта форма скрывается. 

При использовании ShowModal закрывайте диалог указанием свойства ModalResult (программным путём). При указании этого свойства диалоговое окно будет закрыто и метод ShowModal вернёт код, который находится в свойстве ModalResult.

Добавлено через 10 минут и 31 секунду
Код
void __fastcall TForm2::CloseButtonClick(TObject *Sender)
{
    ModalResult = mrOk;
    // ModalResult = 1;  // любое значение, отличимое от нуля
}

PM   Вверх
Severyanin
Дата 8.12.2008, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



586, я так и делаю. только я присваивал этой переменной значение 2. 
Вот код функции-итератора:
Код

void Iteration(void){
    AnsiString name_buf,type_buf,num_buf;
   
    name_buf = convert_char_to_str(measures[iterator_count]->UserName,24);
    type_buf = convert_char_to_str(measures[iterator_count]->OporaType,24);
    num_buf  = convert_char_to_str(measures[iterator_count]->OporaNumber,24);
    
    Form3->Edit1->Text = name_buf;
    Form3->Edit2->Text = IntToStr((unsigned short)measures[iterator_count]->cur_day)+"."+IntToStr((unsigned short)measures[iterator_count]->cur_month)+"."+IntToStr(measures[iterator_count]->cur_year);
    Form3->Edit3->Text = FloatToStr(measures[iterator_count]->R_Zemli);
    Form3->Edit4->Text = IntToStr(measures[iterator_count]->UstanovkaYear);
    Form3->Edit5->Text = type_buf;
    Form3->Edit6->Text = "";
    Form3->Edit7->Text = "";
    Form3->Edit8->Text = "";
    //Form3->ModalResult = mrOk;
    Form3->ShowModal();
   
                //iterator_count++;
        /*} else{
                iterator_count = 0;
                return;
        }  */
}

А вот код всех обработчиков вызываемой формы
Код

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

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
extern HANDLE DbMutex;
extern DWORD Result;
extern TOporaMeasures *measures;
extern unsigned int iterator_count;
extern unsigned short num_blocks;
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
/*__fastcall TForm3::~TForm3(TComponent* Owner)
        : TForm(Owner)
{
        
} */
//---------------------------------------------------------------------------


void __fastcall TForm3::Button1Click(TObject *Sender)
{
    AnsiString name_buf,type_buf,num_buf;
    //name_buf = convert_char_to_str(measures[iterator_count].UserName,24);
    //type_buf = convert_char_to_str(measures[iterator_count].OporaType,24);
    //num_buf  = convert_char_to_str(measures[iterator_count].OporaNumber,24);
    //ShowMessage(name_buf);
    //ShowMessage(StrToInt(name_buf.Length()));
    //ShowMessage(type_buf);
    //ShowMessage(StrToInt(type_buf.Length()));
    //ShowMessage(num_buf);
    //ShowMessage(StrToInt(num_buf.Length()));
    if((Edit1->Text == "")||(Edit2->Text == "")||(Edit3->Text == "")||(Edit4->Text == "")||(Edit5->Text == "")){
        ShowMessage("Заполните, пожалуйста, все обязательные поля формы");
        return;
    } else{
        //Form3->Visible = false;
        Form3->Close();
        Form3->ModalResult = mrOk;
        Form1->Visible = true;
        do
                Result = WaitForSingleObject(DbMutex,10);
        while(Result == WAIT_TIMEOUT);
        DbMutex = OpenMutex(SYNCHRONIZE,false,"DbMutex");

        AnsiString query_buf;
        /*query_buf = "INSERT INTO params(U0,I1,U1,I2,U2,Uc,I1o,U1o,I2o,U2o,Uco,Ute,Ite,U0op,Uop,Roz,Ust_year,Num_op,Type,Meas_date,FIO_OPER,Rb,Rgr,C1,C2,Tau1,Tau2,DeltaU,Rbo,Rgro,C1o,C2o,Tau1o,Tau2o,DeltaUo,Rrast,Rte,Istek,Risk_group,Peregon,ECHK,Dist,Device_id,Uote,R_Zemli,skoU0,Tau1u,C1u0,K3,UC5,Next_date) VALUES("\
        +FloatToStr(measures[iterator_count].U0)+","+FloatToStr(measures[iterator_count].I1)+","+FloatToStr(measures[iterator_count].I2)+","+FloatToStr(measures[iterator_count].U2)+","+FloatToStr(measures[iterator_count].Uc)\
        +","+FloatToStr(measures[iterator_count].I10)+","+FloatToStr(measures[iterator_count].U10)+","+FloatToStr(measures[iterator_count].Uc5)+","+FloatToStr(measures[iterator_count].U0te)+","+FloatToStr(measures[iterator_count].U0op)+","+FloatToStr(measures[iterator_count].Uop)+","+FloatToStr(measures[iterator_count].R_Zemli)\
        +","+Form3->Edit6->Text+","+num_buf+","+Form3->Edit3->Text+","+Form3->Edit5->Text+","+Form3->Edit1->Text+","+FloatToStr(measures[iterator_count].R_beton)+","+FloatToStr(measures[iterator_count].R_gran)+","+FloatToStr(measures[iterator_count].C1i)\
        +","+FloatToStr(measures[iterator_count].C2)+","+FloatToStr(measures[iterator_count].Tau1i)+","+FloatToStr(measures[iterator_count].Tau2)+","+FloatToStr(measures[iterator_count].DeltaU)+","+FloatToStr(measures[iterator_count].R_beton0)+","+FloatToStr(measures[iterator_count].Tau1u0)+","+FloatToStr(measures[iterator_count].Tau2)+","+FloatToStr(measures[iterator_count].DeltaU0)\
        +","+FloatToStr(measures[iterator_count].Rrast)+","+FloatToStr(measures[iterator_count].Rte)+","+FloatToStr(measures[iterator_count].Istek)+","+IntToStr((short)measures[iterator_count].K)+","+Form3->Edit4->Text+","+Form3->Edit7->Text+","+Form3->Edit8->Text+",1,"+FloatToStr(measures[iterator_count].U0te)+","+FloatToStr(measures[iterator_count].R_Zemli)\
        +","+FloatToStr(measures[iterator_count].skoU0)+","+FloatToStr(measures[iterator_count].Tau1u)+","+FloatToStr(measures[iterator_count].C1u0)+","+FloatToStr(measures[iterator_count].K3)+","+FloatToStr(measures[iterator_count].Uc5)+","+IntToStr((short)measures[iterator_count].next_day)+"."+IntToStr((short)measures[iterator_count].next_month)+"."+IntToStr(measures[iterator_count].next_year)+")";
        */
        if(((Form3->Edit1->Text).Pos("@")!=0)||((Form3->Edit1->Text).Pos("|")!=0)){
            if(iterator_count+1 < num_blocks*64){
                                iterator_count++;
                                Form3->Close();
                                Form3->ModalResult = mrOk;
                                //Form3->Visible = false;
                                Iteration();
                        } else{
                                iterator_count = 0;
                                //Form3->Hide();
                                Form3->ModalResult = mrOk;
                                Form3->Close();
                                Iteration();
                                //Form3->Visible = false
            }
            //Form3->Hide();

            //Form3->Visible = false;
            return;
        }
        if(((Form3->Edit5->Text).Pos("@")!=0)||((Form3->Edit5->Text).Pos("|")!=0)){
            if(iterator_count+1 < num_blocks*64){
                                iterator_count++;
                                //Form3->Hide();
                                Form3->Close();
                                Form3->ModalResult = mrOk;
                                //Form3->Visible = false;
                Iteration();
            }           else{
                                iterator_count = 0;
            }
            //Form3->Hide();
                        Form3->Close();
            //Form3->Visible = false;
                        Form3->ModalResult = mrOk;
                        //Form3->Visible = false;
            return;
        }
        Form1->ADOQuery1->Close();
        Form1->ADOQuery1->SQL->Clear();
        Form1->ADOQuery1->SQL->Add("INSERT INTO params(U0,I1,U1,I2,U2,Uc,I1o,U1o,I2o,U2o,Uco,Ute,Ite,U0op,Uop,Roz,Ust_year,Num_op,Type,Meas_date,FIO_OPER,Rb,Rgr,C1,C2,Tau1,Tau2,DeltaU,Rbo,Rgro,C1o,C2o,Tau1o,Tau2o,DeltaUo,Rrast,Rte,Istek,Risk_group,Peregon,ECHK,Dist,Device_id,Uote,R_Zemli,skoU0,Tau1u,C1u0,K3,UC5,Next_date) VALUES("\
        +FloatToStr(measures[iterator_count].U0)+","+FloatToStr(measures[iterator_count].I1)+","+FloatToStr(measures[iterator_count].I2)+","+FloatToStr(measures[iterator_count].U2)+","+FloatToStr(measures[iterator_count].Uc)\
        +","+FloatToStr(measures[iterator_count].I10)+","+FloatToStr(measures[iterator_count].U10)+","+FloatToStr(measures[iterator_count].Uc5)+","+FloatToStr(measures[iterator_count].U0te)+","+FloatToStr(measures[iterator_count].U0op)+","+FloatToStr(measures[iterator_count].Uop)+","+FloatToStr(measures[iterator_count].R_Zemli)\
        +","+Form3->Edit6->Text+","+Form3->Edit1->Text+","+Form3->Edit3->Text+","+Form3->Edit5->Text+","+Form3->Edit1->Text+","+FloatToStr(measures[iterator_count].R_beton)+","+FloatToStr(measures[iterator_count].R_gran)+","+FloatToStr(measures[iterator_count].C1i)\
        +","+FloatToStr(measures[iterator_count].C2)+","+FloatToStr(measures[iterator_count].Tau1i)+","+FloatToStr(measures[iterator_count].Tau2)+","+FloatToStr(measures[iterator_count].DeltaU)+","+FloatToStr(measures[iterator_count].R_beton0)+","+FloatToStr(measures[iterator_count].Tau1u0)+","+FloatToStr(measures[iterator_count].Tau2)+","+FloatToStr(measures[iterator_count].DeltaU0)\
        +","+FloatToStr(measures[iterator_count].Rrast)+","+FloatToStr(measures[iterator_count].Rte)+","+FloatToStr(measures[iterator_count].Istek)+","+IntToStr((short)measures[iterator_count].K)+","+Form3->Edit4->Text+","+Form3->Edit7->Text+","+Form3->Edit8->Text+",1,"+FloatToStr(measures[iterator_count].U0te)+","+FloatToStr(measures[iterator_count].R_Zemli)\
        +","+FloatToStr(measures[iterator_count].skoU0)+","+FloatToStr(measures[iterator_count].Tau1u)+","+FloatToStr(measures[iterator_count].C1u0)+","+FloatToStr(measures[iterator_count].K3)+","+FloatToStr(measures[iterator_count].Uc5)+","+IntToStr((short)measures[iterator_count].next_day)+"."+IntToStr((short)measures[iterator_count].next_month)+"."+IntToStr(measures[iterator_count].next_year)+")");
        Application->MessageBox("query begin","Системное сообщение",MB_OK);
        Form1->ADOQuery1->Open();
        ReleaseMutex(DbMutex);
        if(iterator_count+1 < num_blocks*64){
                iterator_count++;
                //Form3->Hide();
                Form3->Close();
                Form3->ModalResult = mrOk;
                //Form3->Visible = false;
                Iteration();
        } else{
                iterator_count = 0;
        }
    }
        //this->Hide();
    Form3->Close();
    Form3->ModalResult = mrOk;
    //Form3->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormCreate(TObject *Sender)
{
        //Edit1->Text = Form1->ComboBox1->->Caption;        
}
//---------------------------------------------------------------------------

void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
    if((Edit1->Text == "")||(Edit2->Text == "")||(Edit3->Text == "")||(Edit4->Text == "")||(Edit5->Text == "")){
        ShowMessage("Заполните, пожалуйста, все обязательные поля формы");
        return;
    } else{
        //Form3->Visible = false;
        Form3->ModalResult = mrOk;
        Form1->Visible = true;
    }
   // inf_flag = true;
    //if(FormMutex != 0)
        //ReleaseMutex(FormMutex);
}
//---------------------------------------------------------------------------

void __fastcall TForm3::FormShow(TObject *Sender)
{
        ///inf_flag = false;
       //FormMutex = OpenMutex(SYNCHRONIZE,false,"FormMutex");
       //Edit1->Show();
       //Edit2->Show();
       //Edit3->Show();
       //Edit4->Show();
       //Edit5->Show();
       //Edit6->Show();
       //Edit7->Show();
       //Edit8->Show();
}
//---------------------------------------------------------------------------

И еще, у меня просьба будет. Скиньте, пожалуйста, исходники какого-нибудь работающего проекта на Билдере, где бы использовалось управление видимостью форм


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Severyanin
Дата 9.12.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Всем спасибо за участие, просто я заглючил хорошо так. проблема решена


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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