git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jvcl@12 7f62d464-2af8-f54e-996c-e91b33f51cbe
156 lines
4.4 KiB
C++
156 lines
4.4 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include "JvProgressDialogMain.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma resource "*.dfm"
|
|
TfrmProgressDialogDemo *frmProgressDialogDemo;
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TfrmProgressDialogDemo::TfrmProgressDialogDemo(TComponent* Owner)
|
|
: TForm(Owner)
|
|
{
|
|
/*
|
|
Demo for JvProgressDialog: shows off most important properties and events.
|
|
Component is created at run-time so does not need to be installed but the units
|
|
JvProgressDialog.pas and JvProgressFrm.pas must be on the path
|
|
*/
|
|
pd = NULL;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void TfrmProgressDialogDemo::DoModalShow(void)
|
|
{
|
|
char cCancel[2][5]={{""}, {"not "}};
|
|
|
|
// OnProgress and Interval is used in modal mode
|
|
pd->OnProgress = DoDialogProgress;
|
|
if( chkShowEvents->Checked )
|
|
{
|
|
// Execute returns true if the dialog was closed without user intervention
|
|
// and false if the user clicked the Cancel button (or hit Esc when Cancel button is visible)
|
|
ShowMessageFmt("User did %scancel according to Execute", OPENARRAY(TVarRec,(cCancel[pd->Execute()])) );
|
|
}
|
|
else
|
|
{
|
|
pd->Execute();
|
|
}
|
|
}
|
|
|
|
void TfrmProgressDialogDemo::DoNonModalShow(void)
|
|
{
|
|
// Show, Hide and Cancelled is used in non-modal mood
|
|
pd->OnProgress = NULL; // not needed
|
|
pd->Show();
|
|
while( pd->Position <= pd->Max ) // just loop...
|
|
{
|
|
if( pd->Cancelled )
|
|
{
|
|
break;
|
|
}
|
|
pd->Position = pd->Position + random(10);
|
|
pd->Text = Format(edText->Text, OPENARRAY(TVarRec,(pd->Position )) );
|
|
::Sleep(pd->Interval);
|
|
Application->ProcessMessages();
|
|
}
|
|
pd->Hide();
|
|
}
|
|
|
|
void __fastcall TfrmProgressDialogDemo::DoDialogProgress(TObject* Sender, bool & AContinue)
|
|
{
|
|
// notice that you change the properties of the dialog component
|
|
// and these changes are reflected in the dialog
|
|
pd->Position = pd->Position + random(10);
|
|
pd->Text = Format(edText->Text, OPENARRAY(TVarRec,(pd->Position )));
|
|
// AContinue controls if the dialog should remain visible or not
|
|
AContinue = ( pd->Position <= pd->Max );
|
|
}
|
|
|
|
void __fastcall TfrmProgressDialogDemo::DoDialogCancel(TObject *Sender)
|
|
{
|
|
// notice that the ShowMessage always appears *before* the progress dialog is hidden
|
|
if( chkShowEvents->Checked )
|
|
{
|
|
ShowMessage("OnCancel: User cancelled");
|
|
}
|
|
// save the position where the user cancelled:
|
|
FCancelPosition = pd->Position;
|
|
}
|
|
|
|
void __fastcall TfrmProgressDialogDemo::DoDialogClose(TObject * Sender)
|
|
{
|
|
if( chkShowEvents->Checked )
|
|
{
|
|
ShowMessage("OnClose: dialog closed");
|
|
}
|
|
}
|
|
|
|
void __fastcall TfrmProgressDialogDemo::DoDialogShow(TObject * Sender)
|
|
{
|
|
if( chkShowEvents->Checked )
|
|
{
|
|
ShowMessage("OnShow: showing dialog");
|
|
}
|
|
// set initial value
|
|
pd->Text = Format(edText->Text,OPENARRAY(TVarRec,(pd->Position)) );
|
|
}
|
|
|
|
|
|
|
|
void __fastcall TfrmProgressDialogDemo::btnExecuteClick(TObject *Sender)
|
|
{
|
|
FCancelPosition = -1;
|
|
randomize();
|
|
// set everything up according to user choice
|
|
if( pd == NULL )
|
|
{
|
|
pd = new TJvProgressDialog(this);
|
|
}
|
|
pd->Caption = edCaption->Text;
|
|
pd->Text = edText->Text;
|
|
pd->ShowCancel = chkShowCancel->Checked;
|
|
pd->Interval = 100 + random(1000);
|
|
if( chkShowLogo->Checked )
|
|
{
|
|
pd->Image = Image1->Picture;
|
|
pd->Transparent = chkTransparent->Checked;
|
|
}
|
|
else
|
|
{
|
|
pd->Image = NULL;
|
|
}
|
|
// set up events
|
|
pd->OnCancel = DoDialogCancel;
|
|
pd->OnShow = DoDialogShow;
|
|
pd->OnClose = DoDialogClose;
|
|
if( chkShowModal->Checked )
|
|
{
|
|
DoModalShow();
|
|
}
|
|
else
|
|
{
|
|
DoNonModalShow();
|
|
}
|
|
// Here's an example on how to determine *when* the user cancelled the dialog
|
|
// The FCancelPosition value is updated in DoDialogCancel below:
|
|
if( FCancelPosition >= 0 )
|
|
{
|
|
ShowMessageFmt("The user cancelled at position %d", OPENARRAY(TVarRec,(FCancelPosition)) );
|
|
}
|
|
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TfrmProgressDialogDemo::btnSelectImageClick(
|
|
TObject *Sender)
|
|
{
|
|
if( OpenPictureDialog1->Execute() )
|
|
{
|
|
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|