Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Вниз

FontDialog - как отключить начертание и выбор кодировки?   Найти похожие ветки 

 
Olsher   (2005-12-27 16:11) [0]

Как можно отключить начертание и выбор кодировки в FontDialog?
Спасибо


 
Джо ©   (2005-12-27 16:35) [1]


> Olsher   (27.12.05 16:11)

В свойстве Options отключи ненужное.


 
Джо ©   (2005-12-27 16:39) [2]


> [1] Джо ©   (27.12.05 16:35)
> В свойстве Options отключи ненужное.

Хотя, похоже, именно эти вещи и не отключишь таким способом, поспешил я.
В принципе, должно быть несложно написать свой диалог с нужными опциями.


 
Eraser ©   (2005-12-27 16:58) [3]


> Olsher   (27.12.05 16:11)

Как вариант, перед запуском диалога запоминать нужную кодировку и начертание, а после диалога, восстанавливать те значения этих параметров, которые были до вызова диалога.


 
Джо ©   (2005-12-27 17:34) [4]


> Olsher  

Вот, набросал каркас от нечего делать. При необходимости совершенно несложно добавить нужную функциональность, довести до ума и/или превратить этот класс в компонент.
Юнит с классом:

unit FntDlg;

interface
uses SysUtils, Classes, Graphics, StdCtrls, Forms;

type

 TSimpleFontDialog = class
 private
   FFont: TFont;
   FCaption: string;
   Dlg: TForm;
   BtnOK,
   BtnCancel: TButton;
   FontCombo,
   FontSizeCombo: TComboBox;
   function GetFont: TFont;
   procedure SetFont(const Value: TFont);
   procedure PopulateFontNames (AList: TStrings);
   procedure PopulateFontSizes (AList: TStrings);
   procedure OnOkBtnClick (Sender: TObject);
   function FontNameTextValid (AValue: string): Boolean;
   function FontSizeTextValid (AValue: string): Boolean;
   procedure CreateDialog;
 public
   constructor Create;
   destructor Destroy; override;
   property Font: TFont read GetFont write SetFont;
   property Caption: string read FCaption write FCaption;
   function Execute: Boolean;
 end;

implementation
uses Dialogs, Controls;

{ TSimpleFontDialog }

constructor TSimpleFontDialog.Create;
begin
 inherited Create;
 FFont := TFont.Create;
 FCaption := "Select font";
end;

destructor TSimpleFontDialog.Destroy;
begin
 FFont.Free;
 inherited;
end;

function TSimpleFontDialog.Execute: Boolean;
begin
 Dlg := TForm.Create(nil);
 try
   CreateDialog;

   Result := Dlg.ShowModal = mrOK;

   if Result then
   begin
     FFont.Name := FontCombo.Text;
     FFont.Size := StrToInt (FontSizeCombo.Text);
   end;

 finally
   Dlg.Free;
 end;
end;

procedure TSimpleFontDialog.CreateDialog;
begin
 Dlg.BorderStyle := bsDialog;
 Dlg.Position := poScreenCenter;
 Dlg.Caption := FCaption;
 Dlg.Width := 332;
 Dlg.Height := 280;

 FontCombo := TComboBox.Create(Dlg);
 with FontCombo do
 begin
   Parent := Dlg;
   Style := csSimple;
   Left := 4;
   Top := 4;
   Width := 230;
   Height := 220;
 end;
 PopulateFontNames(FontCombo.Items);
 FontCombo.Text := FFont.Name;
 FontCombo.ItemIndex :=
   FontCombo.Items.IndexOf(FFont.Name);

 FontSizeCombo := TComboBox.Create(Dlg);
 with FontSizeCombo do
 begin
   Parent := Dlg;
   Style := csSimple;
   Left := 240;
   Top := 4;
   Width := 80;
   Height := 220;
 end;
 PopulateFontSizes(FontSizeCombo.Items);
 FontSizeCombo.Text := IntToStr(FFont.Size);
 FontSizeCombo.ItemIndex :=
   FontSizeCombo.Items.IndexOf(IntToStr(FFont.Size));

 BtnOK := TButton.Create(Dlg);
 with BtnOK do
 begin
   Parent := Dlg;
   Left := 160;
   Top := 220;
   Caption := "OK";
   Default := True;
   OnClick := OnOkBtnClick;
 end;

 btnCancel := TButton.Create(Dlg);
 with btnCancel do
 begin
   Parent := Dlg;
   Left := 243;
   Top := 220;
   Caption := "Отмена";
   Cancel := True;
   ModalResult := mrCancel;
 end;
end;

function TSimpleFontDialog.FontNameTextValid(AValue: string): Boolean;
begin
 Result := Screen.Fonts.IndexOf(AValue) <> -1
end;

function TSimpleFontDialog.FontSizeTextValid(AValue: string): Boolean;
var
 Dummy: Integer;
begin
 Result := TryStrToInt(AValue, Dummy)
end;

function TSimpleFontDialog.GetFont: TFont;
begin
 Result := FFont;
end;

procedure TSimpleFontDialog.OnOkBtnClick(Sender: TObject);
begin
 if not FontNameTextValid(FontCombo.Text) then
   MessageDlg("Неверное имя шрифта",mtWarning,[MBOK],-1)
 else
   if not FontSizeTextValid (FontSizeCombo.Text) then
     MessageDlg("Размер шрифта должен быть целым числом",mtWarning,[MBOK],-1)
   else
     Dlg.ModalResult := mrOK;
end;

procedure TSimpleFontDialog.PopulateFontNames(AList: TStrings);
begin
 AList.AddStrings(Screen.Fonts);
end;

procedure TSimpleFontDialog.PopulateFontSizes(AList: TStrings);
const
 MAX_FONT_SIZE = 200;
var
 I: Integer;
begin
 for I := 4 to MAX_FONT_SIZE do
 begin
   if not Odd(I) then
     AList.Add(IntToStr(I))
 end;
end;

procedure TSimpleFontDialog.SetFont(const Value: TFont);
begin
 FFont.Assign(Value);
end;

end.

Пример использования:

uses ...,FntDlg,....;
procedure TForm1.Button1Click(Sender: TObject);
var
 FontDialog: TSimpleFontDialog;
begin
 FontDialog := TSimpleFontDialog.Create;
 try
   FontDialog.Caption := "Выберите шрифт";
   if FontDialog.Execute then
   begin
     Button1.Font.Name := FontDialog.Font.Name;
     Button1.Font.Size := FontDialog.Font.Size;
   end;
 finally
   FontDialog.Free;
 end;
end;


 
Olsher   (2005-12-27 17:54) [5]

Спасибо!



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

Форум: "Основная";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
4-1132317014
Devider
2005-11-18 15:30
2006.01.29
Чтение с СОМ-порта...


15-1136700279
ezorcist
2006-01-08 09:04
2006.01.29
Просто глупость))


3-1133342587
barakuda
2005-11-30 12:23
2006.01.29
Поиск в blob-поле


4-1132233343
Hadroran
2005-11-17 16:15
2006.01.29
Получение описателя в меню


2-1136973884
Nafania
2006-01-11 13:04
2006.01.29
SOS!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский