Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

"Не показывать больше это окно"   Найти похожие ветки 

 
Fishka   (2004-10-05 12:28) [0]

Подскажите, как создать окно с галочкой "Не показывать больше это окно"


 
TUser ©   (2004-10-05 12:37) [1]

Кинуть на форму чекбокс?


 
Fishka   (2004-10-05 12:41) [2]

Это понятно он и так галочку ставить будет, мне нужно чтобы ащкьф загружалась в программе до тех пор пока CheckBox не будет с галочкой


 
Reindeer Moss Eater ©   (2004-10-05 12:43) [3]

if then else


 
Суслик ©   (2004-10-05 12:43) [4]

храни где-нибудь:
1. TIniFile
2. TRegistry
3. TFileStream

выбирай на вкус и цвет


 
Fishka   (2004-10-05 12:44) [5]

Логично, только в откомпиленом проекте галочка сохраняться не будет


 
Reindeer Moss Eater ©   (2004-10-05 12:45) [6]

А это не единственное место для галочек


 
Fishka   (2004-10-05 12:46) [7]

По поводу ини-файла вещь пройдет, как создать файлик понятно, а как определить есть-ли он


 
Reindeer Moss Eater ©   (2004-10-05 12:47) [8]

Это тема кандидатской


 
Fishka   (2004-10-05 12:47) [9]

Я не совсем понял, что значит "А это не единственное место для галочек"


 
Reindeer Moss Eater ©   (2004-10-05 12:48) [10]

Это значит что есть еще места.


 
Игорь Шевченко ©   (2004-10-05 12:57) [11]



function hs_MessageDlgWithCheckBox (const MsgStr : String;
                                   DlgType : TMsgDlgType;
                                   var Checked : Boolean;
                                   CheckBoxStr : String) : Integer;
const
   CheckBoxOffset = 10; //Отступ CheckBox"а от краев формы и от кнопок
var CheckBox : TCheckBox;
   AForm : TForm;
   HeightInc, WidthInc : Integer; //Изменения ширины и высоты формы для
                                  //вставки CheckBox"а
   CheckBoxWidth : Integer;    //Ширина CheckBox"а с надписью и отступами
   TextRect : TRect;
   AMsgButtons : TMsgDlgButtons;
   AButton : TButton;
begin
 AMsgButtons := [mbOk];
 case DlgType of
 mtConfirmation:
   AMsgButtons := [mbYes, mbNo];
 end;
 AForm := CreateMessageDialog(MsgStr, DlgType, AMsgButtons);
 with AForm  do
   try
     Caption := Application.Title;
     Position := poMainFormCenter;
     //Создание CheckBox"а с флажком слева от надписи и установка его на форму
     CheckBox := TCheckBox.Create(AForm);
     CheckBox.Alignment := taRightJustify;
     CheckBox.Parent := AForm;
     CheckBox.Caption := CheckBoxStr;
     //Определение ширины надписи на CheckBox"е. Поскольку Canvas CheckBox"а
     //недоступна, ширина определяется по Canvas формы, а чтобы надпись была
     //той же ширины, Font CheckBox"а приравнивается к Font формы.
     CheckBox.Font.Assign(Font);
     SetRect(TextRect, 0, 0, Screen.Width div 2, 0);
     DrawText(Canvas.Handle, PChar(CheckBoxStr), Length(CheckBoxStr), TextRect,
              DT_CALCRECT OR DT_EXPANDTABS OR DT_WORDBREAK);
     //TextRect содержит размеры надписи для CheckBox"а.
     //Я считаю, что CheckBox без надписи имеет ширину, равную высоте
     //(установлено эмпирическим путем)
     //Ширина CheckBox"а с отступами справа и слева.
     CheckBoxWidth := TextRect.Right + CheckBoxOffset * 2 + CheckBox.Height;
     //Изменение высоты формы
     HeightInc := CheckBox.Height + CheckBoxOffset;
     Height := Height + HeightInc;
     //Если CheckBox с надписью получился шире формы, то форма должна стать
     //шире, а кнопки выровнены по центру.
     if (Width < CheckBoxWidth) then begin
       WidthInc := (CheckBoxWidth - Width) DIV 2; //Для центрирования кнопок
       Width := CheckBoxWidth;
     end else
       WidthInc := 0;
     if (DlgType = mtConfirmation) then begin
       AButton := FindComponent("Yes") as TButton;
       AButton.Caption:=SMsgDlgYes;
     end else
       AButton := FindComponent("Ok") as TButton;
     with AButton do begin
       Top := Top + HeightInc;
       //По первой кнопке спозиционировать CheckBox по высоте
       CheckBox.Top := Top - CheckBox.Height - CheckBoxOffset;
       Left := Left + WidthInc;
     end;
     if DlgType = mtConfirmation then
       with (FindComponent("No") as TButton) do begin
         Caption:=SMsgDlgNo;
         Top := Top + HeightInc;
         Left := Left + WidthInc;
       end;
     CheckBox.Width := Width - CheckBoxOffset;
     CheckBox.Left := CheckBoxOffset;
     Result := ShowModal;
     Checked := CheckBox.Checked;
   finally
     Free;
   end;
end;

{
 Функция выдает сообщение, требующее подтверждения, с возможностью отключения
 выдачи этого сообщения.
}
function ConfirmWithCheckBox (const MsgStr: String; var Checked: Boolean;
     CheckBoxStr: String = "Больше не показывать это сообщение"): Integer;
begin
 Result := hs_MessageDlgWithCheckBox (MsgStr, mtConfirmation, Checked,
                                      CheckBoxStr);
end;



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
1-1096382476
Antonmm2
2004-09-28 18:41
2004.10.17
Функции


14-1096045730
VictorT
2004-09-24 21:08
2004.10.17
Вот такой вот спам пришёл...


1-1096464111
Iconka
2004-09-29 17:21
2004.10.17
Зачем такое объявление класса?


1-1096864388
AlexV
2004-10-04 08:33
2004.10.17
Как из Delphi открыть страницу Internet в НОВОМ окне браузера?


1-1096803936
greenrul
2004-10-03 15:45
2004.10.17
ActionManager +ActionToolbar + ActionMainMenu