Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Вниз(API) Не могу текст переместить в нужное место на форме Найти похожие ветки
← →
ffo © (2006-08-22 21:37) [0]Привет Мастера!
Создал экземпляр нового шрифта, задал ему цвет, поворот, фон...
надо теперь чтоб писаться он начинал в определенной точке формы с координатами i,j. Не получается.
Есть конечно и другие варианты работы со шрифтом на форме, но по ряду причин мне надо именно так (текст там будет состоять из 1-3 букв, ну да это уже ненужные подробности).
Вывожу текст так (выводится исключительно в верхний левый угол формы):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Str:String;
DC1:HDC;
F1: TLogFont;
NewFont1:HFont;
//NewBrush: HBrush;
//NewPen: HPen;
tRect1:TRect;
i:Integer =400;//куда хочу вывести
j:Integer =400;
implementation
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
DC1:= GetDC(Handle);
Str:="L";
try
FillChar(F1, SizeOf(F1), 0);
with F1 do
begin
lfHeight := 50;lfWeight := 0;lfEscapement:=0;
lfOrientation:=0;lfWeight:=fw_Normal;lfItalic:=0;lfUnderline:=0;lfStrikeOut:=0;l fCharSet:=Symbol_CharSet;
lfOutPrecision:=Out_Default_Precis;lfClipPrecision:=Clip_Default_Precis;lfQualit y:=Proof_Quality;
lfPitchAndFamily:=Fixed_Pitch or ff_Roman;StrPCopy(lfFaceName,"Times New Roman"{"SBAVIA"});
end;
NewFont1:= CreateFontIndirect(F1);
SelectObject(DC1,NewFont1);
// SetTextColor(DC1,clRed);
SetTextColor(DC1,clBlue);
SetBkMode(DC1,TRANSPARENT);
Canvas.PenPos:=Point(i,j);//Задал позицию курсора 300/300
tRect1:=Canvas.ClipRect;
DrawText(DC1,PChar(Str), -1,tRect1,dt_NoClip); //Работает !!!... но выводит черти куда
//Не работает
// SelectObject(DC1,NewFont1); SetTextColor(DC1,clRed); SetBkMode(DC1, TRANSPARENT);
// TextOut(DC1, 300,400,PChar(Str),Length(Str));
finally
ReleaseDC(Handle,DC1);//Освободили ссылку
DeleteDC(DC1);//Удалили ссылку
DeleteObject(NewFont1);
//DeleteObject(NewBrush); //Удалить объект
//DeleteObject(NewPen); //Удалить объект
end;
end;
end.
← →
begin...end © (2006-08-22 21:49) [1]> ffo © (22.08.06 21:37)
> tRect1:=Canvas.ClipRect;
> DrawText(DC1,PChar(Str), -1,tRect1,dt_NoClip);
???
← →
Ketmar © (2006-08-22 21:53) [2]интересно, нафига использовать API в данном VCL-приложении?
← →
ffo © (2006-08-22 22:15) [3]
> интересно, нафига использовать API в данном VCL-приложении?
Да это не основное приложение, а вынесенный пример так сказать для отладки.
Иду проверять предложение
begin...end
← →
Anatoly Podgoretsky © (2006-08-22 22:18) [4]То есть будешь выяснять сколько у него вопросов?
← →
Ketmar © (2006-08-22 22:22) [5]> [4] Anatoly Podgoretsky © (22.08.06 22:18)
кстати, win32.hlp в данном случае и меня когда-то в тупик поставила. я понимал так, что передаваемый rect -- это всего лишь размеры. оказалось -- неправда, это позиция и размеры. %-)
← →
ffo © (2006-08-22 22:29) [6]
> Ketmar
Вопрос так и стоит...
← →
DiamondShark © (2006-08-22 22:34) [7]Это вы на что намекаете?
← →
Ketmar © (2006-08-22 22:36) [8]> [7] DiamondShark © (22.08.06 22:34)
на ахтунг? но это не ко мне, честно. меня с кем-то попутали! Йогг Сотот Ктулху Фхтагхн!
%-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c