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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.11.2012, 20:54
s2004 s2004 вне форума
Прохожий
 
Регистрация: 23.11.2009
Сообщения: 6
Репутация: 10
Восклицание вкладка embeddedwb не отображает русский шрифт

Код:
procedure TForm1.AddUrl1Click(Sender: TObject);
begin
Caption := AddToFavorites(IEAddress1.Text, '', 'Delphi');
end;
unit DlgAddToFavourites;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ShlObj;
 
type
  TfAddToFavorites = class(TForm)
    GroupBox1: TGroupBox;
    eUrl: TEdit;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    eName: TEdit;
    cbFolder: TComboBox;
    BitBtn1: TBitBtn;
    bOk: TBitBtn;
    bCancel: TBitBtn;
    procedure cbFolderDrawItem(Control: TWinControl; Index: Integer;
      r: TRect; State: TOwnerDrawState);
    procedure bOkClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    fFileName: string;
    function GetFolder: string;
    function GetUName: string;
    function GetUrl: string;
    procedure SetFolder(const Value: string);
    procedure SetUName(const Value: string);
    procedure SetUrl(const Value: string);
    procedure RescanFolders;
    function GetFavourites: string;
  public
    function Execute(AUrl: string; AName: string = ''; AFolder: string = ''): Boolean;
    property FovouritesFolder: string read GetFavourites;
    constructor Create(AOwner: TComponent); override;
  published
    property URL: string read GetUrl write SetUrl;
    property UName: string read GetUName write SetUName;
    property Folder: string read GetFolder write SetFolder;
    property FileName: string read fFileName write fFileName;
  end;
 
function AddToFavorites(AUrl, AName, AFolder: string): string;
 
implementation
 
{$R *.dfm}
 
{ TfAddToFavorites }
 
constructor TfAddToFavorites.Create(AOwner: TComponent);
begin
  inherited;
  RescanFolders;
end;
 
function TfAddToFavorites.Execute(AUrl, AName, AFolder: string): Boolean;
begin
  UName := AName;
  Url := AUrl;
  if AFolder <> '' then
    AFolder := ExtractFileName(GetFavourites) + '\' + AFolder;
  cbFolder.ItemIndex := cbFolder.Items.IndexOf(AFolder);
  if (cbFolder.ItemIndex = -1) then cbFolder.ItemIndex := 0;
  Result := ShowModal = mrOk;
end;
 
function TfAddToFavorites.GetFavourites: string;
var s:  string;
begin
  SetLength(s, MAX_PATH);
  if not SHGetSpecialFolderPath(0, PChar(s), CSIDL_FAVORITES, true)
  then s := '';
  result := PChar(s);
end;
 
function TfAddToFavorites.GetFolder: string;
begin
  Result := cbFolder.Text;
end;
 
function TfAddToFavorites.GetUName: string;
begin
  Result := eName.Text;
end;
 
function TfAddToFavorites.GetUrl: string;
begin
  Result := eUrl.Text;
end;
 
procedure ScanFolder(path: string; sl: TStrings; pref: string);
var
  sr: TSearchRec;
begin
  path := path + '\';
  if FindFirst(path + '*.*', faDirectory, sr) = 0 then
  begin
    repeat
      if ((sr.Attr and faDirectory) = faDirectory) then
      if (sr.Name <> '.') and (sr.Name <> '..') then
      begin
        sl.Add(pref + sr.Name);
        ScanFolder(path + sr.Name, sl, pref + '\' + sr.Name);
      end;
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
 
procedure TfAddToFavorites.RescanFolders;
var
  sl: TStrings;
  p:  string;
begin
  p := GetFavourites;
  sl := cbFolder.Items;
  sl.Add(ExtractFileName(p));
  ScanFolder(p, sl, ExtractFileName(p) + '\');
end;
 
procedure TfAddToFavorites.SetFolder(const Value: string);
begin
  cbFolder.Text := Value;
end;
 
procedure TfAddToFavorites.SetUName(const Value: string);
begin
  eName.Text := Value;
end;
 
procedure TfAddToFavorites.SetUrl(const Value: string);
begin
  eUrl.Text := Value;
end;
 
function AddToFavorites(AUrl, AName, AFolder: string): string;
var f: TfAddToFavorites;
begin
  Application.CreateForm(TfAddToFavorites, f);
  if f.Execute(AUrl, AName, AFolder) then Result := f.FileName
  else Result := '';
  f.Free;
end;
 
procedure TfAddToFavorites.cbFolderDrawItem(Control: TWinControl;
  Index: Integer; r: TRect; State: TOwnerDrawState);
var
  i,o,l,d: integer;
  s,n: string;
  cb: TComboBox;
begin
  cb := TComboBox(Control);
  s := cb.Items[Index];
  n := ExtractFileName(s);
  o := 0;
  for i := 1 to Length(s) do if s[i] = '\' then Inc(o);
  with cb.Canvas do
  begin
    if odHotLight    in State then cb.Brush.Color := clHighlight
    else cb.Brush.Color := clWindow;
    cb.Canvas.FillRect(Rect(0, r.Top, cb.Width, r.Bottom));
    l := r.Left + o * 10; d := r.Top + (r.Bottom - r.Top) div 2;
    Polyline([Point(l-1, d), Point(l-5, d), Point(l-5, r.Top), Point(l-5, r.Bottom)]);
    cb.Canvas.TextOut(l, r.Top, n);
  end;
end;
 
procedure TfAddToFavorites.bOkClick(Sender: TObject);
var
  f: string;
  sl: TStringList;
begin
  f := ExtractFilePath(GetFavourites) + Folder;
  ForceDirectories(f);
  sl := TStringList.Create;
  sl.Add('[InternetShortcut]');
  sl.Add('URL=' + url);
  f := f + '\' + UName + '.url';
  try
    sl.SaveToFile(f);
  finally
    sl.Free;
  end;
  Close;
end;
 
procedure TfAddToFavorites.BitBtn1Click(Sender: TObject);
var
  f: TForm;
  e: TEdit;
  b: TBitBtn;
  s: string;
begin
  f := TForm.Create(nil);
  f.Width := 300;
  f.Caption := 'Add New Folder';
  f.Position := poScreenCenter;
  e := TEdit.Create(f);
  e.Parent := f;
  f.ClientHeight := e.Height;
  e.Align := alTop;
  b := TBitBtn.Create(f);
  b.Top := e.BoundsRect.Bottom + 4;
  b.Left := 8;
  b.Parent := f;
  b.Kind := bkOK;
  b := TBitBtn.Create(f);
  b.Top := e.BoundsRect.Bottom + 4;
  b.Parent := f;
  b.Kind := bkCancel;
  b.Left := f.ClientWidth - b.Width - 8;
  b.Anchors := [akTop, akRight];
  f.ClientHeight := b.BoundsRect.Bottom + 4;
  if f.ShowModal = mrOk then
  begin
    if e.Text = '' then Exit;
    s := cbFolder.Text + '\' + e.Text;
    cbFolder.Items.Insert(cbFolder.ItemIndex + 1, s);
    cbFolder.ItemIndex := cbFolder.ItemIndex + 1;
  end;
end;
 
end.

английский выводится правильно, русский кокарябины
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter