| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "VCLCommon.h"
- #include <Common.h>
- #include <TextsWin.h>
- #include <FileCtrl.hpp>
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- //---------------------------------------------------------------------------
- void __fastcall AdjustListColumnsWidth(TListView* ListView)
- {
- int OriginalWidth, NewWidth, i, CWidth;
- OriginalWidth = 0;
- for (i = 0; i < ListView->Columns->Count; i++)
- {
- OriginalWidth += ListView->Columns->Items[i]->Width;
- }
- NewWidth = 0;
- CWidth = ListView->ClientWidth;
- if ((ListView->VisibleRowCount < ListView->Items->Count) &&
- (ListView->Width - ListView->ClientWidth < GetSystemMetrics(SM_CXVSCROLL)))
- {
- CWidth -= GetSystemMetrics(SM_CXVSCROLL);
- }
- for (i = 0; i < ListView->Columns->Count-1;i++)
- {
- if (ListView->Columns->Items[i]->Tag == 0)
- {
- ListView->Columns->Items[i]->Width =
- (CWidth * ListView->Columns->Items[i]->Width) / OriginalWidth;
- }
- NewWidth += ListView->Columns->Items[i]->Width;
- }
- ListView->Columns->Items[ListView->Columns->Count-1]->Width = CWidth-NewWidth;
- }
- //---------------------------------------------------------------------------
- void __fastcall EnableControl(TControl * Control, bool Enable)
- {
- if (Control->Enabled != Enable)
- {
- if (Control->InheritsFrom(__classid(TWinControl)) &&
- (((TWinControl*)Control)->ControlCount > 0))
- {
- for (Integer Index = 0; Index < ((TWinControl*)Control)->ControlCount; Index++)
- EnableControl(((TWinControl*)Control)->Controls[Index], Enable);
- }
- Control->Enabled = Enable;
- }
- if (Control->InheritsFrom(__classid(TCustomEdit)) ||
- Control->InheritsFrom(__classid(TCustomComboBox)))
- {
- if (Enable) ((TEdit*)Control)->Color = clWindow;
- else ((TEdit*)Control)->Color = clBtnFace;
- }
- };
- //---------------------------------------------------------------------------
- struct TSavedSystemSettings
- {
- AnsiString FontName;
- bool Flipped;
- };
- //---------------------------------------------------------------------------
- void __fastcall UseSystemSettings(TCustomForm * Control, void ** Settings)
- {
- bool Flip;
- AnsiString FlipStr = LoadStr(FLIP_CHILDREN);
- Flip = !FlipStr.IsEmpty() && static_cast<bool>(StrToInt(FlipStr));
-
- if (Settings)
- {
- TSavedSystemSettings * SSettings = new TSavedSystemSettings();
- *Settings = static_cast<void*>(SSettings);
- SSettings->FontName = Control->Font->Name;
- SSettings->Flipped = Flip;
- }
- assert(Control && Control->Font);
- Control->Font->Name = "MS Shell Dlg";
- if (Flip)
- {
- Control->FlipChildren(true);
- }
- };
- //---------------------------------------------------------------------------
- void __fastcall RevokeSystemSettings(TCustomForm * Control,
- void * Settings)
- {
- assert(Settings);
- if (static_cast<TSavedSystemSettings*>(Settings)->Flipped)
- {
- Control->FlipChildren(true);
- }
- delete Settings;
- };
- //---------------------------------------------------------------------------
- void __fastcall LinkLabel(TLabel * Label)
- {
- Label->ParentFont = true;
- Label->Font->Style = Label->Font->Style << fsUnderline;
- Label->Font->Color = clBlue;
- }
- //---------------------------------------------------------------------------
- class TPublicForm : public TForm
- {
- friend void __fastcall ShowAsModal(TForm * Form, void *& Storage);
- friend void __fastcall HideAsModal(TForm * Form, void *& Storage);
- };
- //---------------------------------------------------------------------------
- struct TShowAsModalStorage
- {
- void * FocusWindowList;
- void * FocusActiveWindow;
- };
- //---------------------------------------------------------------------------
- void __fastcall ShowAsModal(TForm * Form, void *& Storage)
- {
- CancelDrag();
- if (GetCapture() != 0) SendMessage(GetCapture(), WM_CANCELMODE, 0, 0);
- ReleaseCapture();
- (static_cast<TPublicForm*>(Form))->FFormState << fsModal;
- TShowAsModalStorage * AStorage = new TShowAsModalStorage;
- AStorage->FocusActiveWindow = GetActiveWindow();
- AStorage->FocusWindowList = DisableTaskWindows(0);
- Form->Show();
- SendMessage(Form->Handle, CM_ACTIVATE, 0, 0);
- Storage = AStorage;
- }
- //---------------------------------------------------------------------------
- void __fastcall HideAsModal(TForm * Form, void *& Storage)
- {
- assert((static_cast<TPublicForm*>(Form))->FFormState.Contains(fsModal));
- TShowAsModalStorage * AStorage = static_cast<TShowAsModalStorage *>(Storage);
- Storage = NULL;
- SendMessage(Form->Handle, CM_DEACTIVATE, 0, 0);
- if (GetActiveWindow() != Form->Handle)
- {
- AStorage->FocusActiveWindow = 0;
- }
- Form->Hide();
- EnableTaskWindows(AStorage->FocusWindowList);
- if (AStorage->FocusActiveWindow != 0)
- {
- SetActiveWindow(AStorage->FocusActiveWindow);
- }
- (static_cast<TPublicForm*>(Form))->FFormState >> fsModal;
- delete AStorage;
- }
- //---------------------------------------------------------------------------
- void __fastcall ReleaseAsModal(TForm * Form, void *& Storage)
- {
- if (Storage != NULL)
- {
- HideAsModal(Form, Storage);
- }
- }
- //---------------------------------------------------------------------------
- bool __fastcall SelectDirectory(AnsiString & Path, const AnsiString Prompt,
- bool PreserveFileName)
- {
- bool Result;
- unsigned int ErrorMode;
- ErrorMode = SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS);
- try
- {
- AnsiString Directory;
- AnsiString FileName;
- if (!PreserveFileName || DirectoryExists(Path))
- {
- Directory = Path;
- }
- else
- {
- Directory = ExtractFilePath(Path);
- FileName = ExtractFileName(Path);
- }
- Result = SelectDirectory(Prompt, "", Directory);
- if (Result)
- {
- Path = Directory;
- if (!FileName.IsEmpty())
- {
- Path = IncludeTrailingBackslash(Path) + FileName;
- }
- }
- }
- __finally
- {
- SetErrorMode(ErrorMode);
- }
- return Result;
- }
|