Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.09.2010, 10:22
FreeSeeTman FreeSeeTman вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 11
Репутация: 10
По умолчанию Вывод шрифтов в списке в виде самих шрифтов

Добрый день. Я начну.
Необходимо сделать список шрифтов в виде самих шрифтов.
Вот в нете нашел такой вот код:
Код:
unit Fontlist;

interface

uses
  Windows, Classes, Graphics, Forms, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    FontLabel: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure DrawItem(Control: TWinControl; index: Integer; Rect: TRect;
      State: TOwnerDrawState);
    procedure ListBox1MeasureItem(Control: TWinControl; index: Integer;
      var Height: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Listbox1.Items := Screen.Fonts;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  FontLabel.Caption := ListBox1.Items[ListBox1.ItemIndex];
end;

procedure TForm1.DrawItem(Control: TWinControl; index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ListBox1.Canvas do
  begin
    FillRect(Rect);
    Font.name := ListBox1.Items[index];
    Font.Size := 0; // use font's preferred size
    TextOut(Rect.Left+1, Rect.Top+1, ListBox1.Items[index]);
  end;
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; index: Integer;
  var Height: Integer);
begin
  with ListBox1.Canvas do
  begin
    Font.name := Listbox1.Items[index];
    Font.Size := 0; // use font's preferred size
    Height := TextHeight('Wg') + 2; // measure ascenders and descenders
  end;
end;

end.

Но как бы он не работает...
Иии тут Listbox я вообще делаю через ComboBox но и так и так вообще не выходит...
Иии тут написано процедура TForm1.DrawItem но такой нет она же только или в ListBox или в ComboBox на Form её нет...я делал через TForm1.ListBox1DrawItem но всё равно результат нулевой...
Помогите кто чем может)
Ответить с цитированием
  #2  
Старый 23.09.2010, 10:24
FreeSeeTman FreeSeeTman вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 11
Репутация: 10
По умолчанию

Кстати в этом коде лишний Label походу...и вообще я сделал для Richedit это всё...но важен мне сам список ибо всю остальную функцию я выполнил...
Ответить с цитированием
  #3  
Старый 23.09.2010, 11:50
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так надо??
Вложения
Тип файла: rar --.rar (1.7 Кбайт, 8 просмотров)
Ответить с цитированием
  #4  
Старый 23.09.2010, 12:04
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вот еще с комбиком:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    ComboBox1: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1MeasureItem(Control: TWinControl; Index: Integer;
      var Height: Integer);
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure ListBox1Click(Sender: TObject);
    procedure ComboBox1MeasureItem(Control: TWinControl; Index: Integer;
      var Height: Integer);
    procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Items.Assign(Screen.Fonts);
  ComboBox1.Items.Assign(Screen.Fonts);
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
  var Height: Integer);
begin
  with ListBox1.Canvas do
  begin
    Font.Name:=ListBox1.Items[Index];
    Font.Size:=0;
    Height:=TextHeight('Wg')+2;
  end;
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ListBox1.Canvas do
  begin
    FillRect(Rect);
    Font.Name:=ListBox1.Items[Index];
    Font.Size:=0;
    TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  Label1.Caption:=ListBox1.Items[ListBox1.ItemIndex];
end;

procedure TForm1.ComboBox1MeasureItem(Control: TWinControl; Index: Integer;
  var Height: Integer);
begin
  if Index=-1 then Exit;
  with ComboBox1.Canvas do
  begin
    Font.Name:=ComboBox1.Items[Index];
    Font.Size:=0;
    Height:=TextHeight('Wg')+2;
  end;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  if Index=-1 then Exit;
  with ComboBox1.Canvas do
  begin
    FillRect(Rect);
    Font.Name:=ComboBox1.Items[Index];
    Font.Size:=0;
    TextOut(Rect.Left, Rect.Top, ComboBox1.Items[Index]);
  end;
end;

end.
Вложения
Тип файла: rar --.rar (1.8 Кбайт, 7 просмотров)
Ответить с цитированием
  #5  
Старый 24.09.2010, 07:22
FreeSeeTman FreeSeeTman вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 11
Репутация: 10
По умолчанию

В ComboBox надо было в Style поставить csOwnerDrawVariable
-_-"
Спасибо NumLockу сверил его архив смоим)
Ответить с цитированием
  #6  
Старый 24.09.2010, 07:56
FreeSeeTman FreeSeeTman вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 11
Репутация: 10
По умолчанию

Блин вот теперь когда это заработало теперь вот нне работает определение шрифта: когда щёлкаешь на отдельную область текста в ричедите что бы он показыавл что там за шриф в этом же комбобоксе ну как в ворде...
У меня раньше тупо так работало в MouseUpе:
ComboBox2.SelText:=RichEdit1.SelAttributes.Name;
Хотя размер отлично показыввыает:
ComboBox1.Text:=IntToStr(RichEdit1.SelAttributes.s ize);
Ответить с цитированием
  #7  
Старый 24.09.2010, 08:01
FreeSeeTman FreeSeeTman вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 11
Репутация: 10
По умолчанию

Он печатает тем же шрифтом но не показывает его почему то =\
Ответить с цитированием
  #8  
Старый 24.09.2010, 08:42
FreeSeeTman FreeSeeTman вне форума
Прохожий
 
Регистрация: 10.09.2010
Сообщения: 11
Репутация: 10
По умолчанию

ДУмаю как нибудь через ComboBox2.Items[ComboBox2.ItemIndex] сделать но ещё не допёр)

Как выяснить какой строчкой идёт шрифт в комбобоксе именно тот на котором сейчас курсор...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:26.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025