В Дельфи есть предопределенные переменные языковых установок и форматов:

 

Code:

procedure GetKLList(List: TStrings);

var

  AList : array [0..9] of Hkl;

  AklName: array [0..255] of Char;

  i: Longint;

begin

  List.Clear;

  for i := 0 to GetKeyboardLayoutList(SizeOf(AList), AList) - 1 do

    begin

      GetLocaleInfo(LoWord(AList[i]), LOCALE_SLANGUAGE, AklName, SizeOf(AklName));

      List.AddObject(AklName, Pointer(AList[i]));

    end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

  GetKLList(ListBox1.Items);

end;

 

procedure TForm1.ListBox1Click(Sender: TObject);

begin

  with Sender as TListBox do

    ActivateKeyboardLayout(Hkl(Items.Objects[ItemIndex]), 0);

end;

В Delphi есть три функции для изменения регистра: upcase, lowercase, uppercase. Но они работают только для латинского алфавита.  Чтобы сделать аналогичные функции для русского алфавита я использовал то, что в кодировке Windows-1251 буквы расставлены по алфавиту, как большие, так и маленькие. То есть номер большой буквы связан с номером маленькой константой. И в русском, и в английском алфавитах маленькие буквы находятся за большими с разностью в 32 символа. Здесь реализованы четыре функции: upcase и locase для изменения регистра одного символа, и uppercase и lowercase для изменения регистра строки

Например, молоко - moloko. И всё.

 

Вот пример функции, которая транслирует из русских слов в английские.

Пригодилась, когда нужно было файлы в mp3-плеер перегонять - он русский не понимает.

Используй вызов DrawTextEx, установив в параметре dwDTFormat значение DT_PATH_ELLIPSIS.

Узнать текущую раскладку клавиатуры в любом активном окне

 возвращает числовое значение соответственно установленной раскладке

 

Зависимости: windows

Чтобы вывести под любым углом текст необходимо использовать TrueType Fonts (например "Arial"). Например:

 

Code:

var

Hfont: Thandle;

logfont: TLogFont;

font: Thandle;

count: integer;

begin

LogFont.lfheight := 30;

logfont.lfwidth := 10;

logfont.lfweight := 900;

LogFont.lfEscapement := -200;

logfont.lfcharset := 1;

logfont.lfoutprecision := out_tt_precis;

logfont.lfquality := draft_quality;

logfont.lfpitchandfamily := FF_Modern;

font := createfontindirect(logfont);

Selectobject(Form1.canvas.handle, font);

SetTextColor(Form1.canvas.handle, rgb(0, 0, 200));

SetBKmode(Form1.canvas.handle, transparent);

{textout(form1.canvas.handle,10,10,'Повернутый',7);}

for count := 1 to 100 do

begin

   canvas.textout(Random(form1.width), Random(form1.height), 'Повернутый');

   SetTextColor(form1.canvas.handle, rgb(Random(255), Random(255),

     Random(255)));

end;

deleteobject(font);

end;

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

OldTextColor: TColorRef;

OldBkColor: TColorRef;

OldBkMode: Integer;

begin

OldTextColor := SetTextColor(Form1.Canvas.Handle, clYellow);

OldBkColor := SetBkColor(Form1.Canvas.Handle, clGreen);

OldBkMode := SetBkMode(Form1.Canvas.Handle, OPAQUE);

TextOut(Form1.Canvas.Handle, 20, 20, 'Delphi World - лучше всех! ;-)', 27);

SetBkMode(Form1.Canvas.Handle, OldBkMode);

SetBkColor(Form1.Canvas.Handle, OldBkColor);

SetTextColor(Form1.Canvas.Handle, OldTextColor);

end;

 Автор: Олег Кулабухов

 

Code:

procedure TForm1.FormPaint(Sender: TObject);

var

x, y: integer;

bm: TBitMap;

begin

Form1.ClientWidth := 200;

Form1.ClientHeight := 100;

randomize;

for x := 0 to 199 do

   for y := 0 to 99 do

     if random(3) = 1 then

       Form1.Canvas.Pixels[x,y] := clGreen

     else

       Form1.Canvas.Pixels[x,y] := clLime;

bm := TBitMap.Create;

bm.Width := 200;

bm.Height := 100;

with bm.Canvas do

begin

   Brush.Color := clGreen;

   FillRect(ClipRect);

   Font.name := 'Arial';

   Font.Size := 50;

   Font.Color := clGray;

   Font.Style := [fsBold];

   TextOut((bm.Width - TextWidth('Text')) div 2,

   (bm.Height - TextHeight('Text')) div 2, 'Text');

end;

Form1.Canvas.CopyMode := cmSrcPaint;

Form1.Canvas.CopyRect(bm.Canvas.ClipRect, bm.Canvas,

bm.Canvas.ClipRect);

bm.Destroy;

end;

 

 

Для этого можно воспользоваться API функцией SetBkMode().