-
НУжно создать компонент на основе TButton и TCheckbox штоб принажатии кнопки TCheckbox поворачивался на 45 градусов
-
Имеется ввиду просто поворот "МестоГдеставитьсяГалочка" на произвольный угол ?
-
да на 45 градусов.
-
> [0] ВОВА (20.12.07 22:52)
> Как сделать компонент на основе TButton и TCheckbox .... > штоб принажатии кнопки TCheckbox поворачивался на 45 градусов
никак
Тебе наверняка не компонент ведь нужен, так? "Обрисуй" задачу....
-
Ставиться задача создания компонента на основе CheckBox у которого будет метод rotate поворачивающее компонентна 45 градусов
-
Можно его неповорачивать а просто изменить внешний вид на ромб с крестиком внутри
-
> [4] ВОВА (20.12.07 23:22) > Ставиться задача создания компонента на основе CheckBox > у которого будет метод rotate поворачивающее компонентна > 45 градусов
> [5] ВОВА (20.12.07 23:25) > Можно его неповорачивать а просто изменить внешний вид на > ромб с крестиком внутри
врядли получится задуманное с TCheckBox'ом....
Могу посоветовать создать новый компонент, потомок TGraphicControl'а в котором и рисовать, например функцией DrawFrameControl, свой чекбокс и при необходимости "крутить" канву...
-
Пасиб.. а можна пример кода такого компонента
-
Вопросы по решению учебных задач у нас принято переносить в "Прочее" или в "Начинающие". Тем более если не приведя ни одной строчки своего кода, просят "пример".
-
> [7] ВОВА (21.12.07 02:24) > а можна пример кода такого компонента
Можно подсказать, когда не понятно.... Что тебе не понятно? Если опять спросишь пример кода компонента, то это не подсказка уже а решение твоей задачи.... Хотя что есть пример кода? На вот примерно так: TRotatedCheckBox = class(TGraphicControl)
private
FChecked: Boolean;
FRotated: Boolean;
procedure SetChecked(const Value: Boolean);
procedure SetRotated(const Value: Boolean);
protected
procedure Paint; override;
procedure Click; override;
published
property Rotated: Boolean read FRotated write SetRotated;
property Checked: Boolean read FChecked write SetChecked;
property Caption;
end; Вот метод Паинт будет ядром твоего компонента.... Само собой разумеется, что это не полное и не идеальное описание этого компонента, что бы все правильно сделать - нужно его делать, тестировать, опять делать, исправлять ошибки..... вообщем это не моя задача, а твоя) Если что конкретно будет непонятно, то спрашивай...
-
Вот пример вращения текста
procedure TForm1.PaintBox1Paint(Sender: TObject);
var R: TRect;
lf: TLogFont;
tf: TFont;
C: TCanvas;
begin
FillChar(lf, SizeOf(lf), 0);
tf := TFont.Create;
C := PaintBox1.Canvas;
tf.Assign(C.Font);
GetObject(tf.Handle, SizeOf(Lf), @Lf);
lf.lfEscapement := TrackBar1.Position;
lf.lfOrientation := 30;
lf.lfFaceName := 'Wingdings';
lf.lfHeight := 100;
tf.Handle := CreateFontIndirect(Lf);
C.Font.Assign(tf);
C.TextOut(100,100,'y');
lf.lfFaceName := 'Times New Roman';
lf.lfEscapement := TrackBar1.Position;
tf.Handle := CreateFontIndirect(Lf);
C.Font.Assign(tf);
C.TextOut(180,100,'CheckBox1');
tf.Free;
end;
-
> [10] DimaBr © (24.12.07 10:31)
Привет) Ему текст вроде бы не нужно крутить, а только сам "квадратик" повернуть на 45 гр. чтоб ромб получился...
> Можно его неповорачивать а просто изменить внешний вид на ромб с крестиком внутри
> Хотя... он что-то молчит.... обиделся наверное :), пример кода не дали :(
-
В шрифте Wingdings трудно отыскать буквы
-
> В шрифте Wingdings трудно отыскать буквы
Хм... не обратил внимания на название шрифта) > Я имел в виду нечто такое: var NewXF, OldXF: TXForm;
begin
SetGraphicsMode(PaintBox1.Canvas.Handle, GM_ADVANCED);
GetWorldTransform(PaintBox1.Canvas.Handle, OldXF);
NewXF.eM11 := Cos(0.125 * Pi * 2);
NewXF.eM22 := Cos(0.125 * Pi * 2);
NewXF.eM12 := Sin(0.125 * Pi * 2);
NewXF.eM21 := -Sin(0.125 * Pi * 2);
NewXF.eDX := 14;
NewXF.eDY := 2;
ModifyWorldTransform(PaintBox1.Canvas.Handle, NewXF, MWT_LEFTMULTIPLY);
DrawFrameControl(PaintBox1.Canvas.Handle, Rect(0,0,14,14), DFC_BUTTON, 0 );
SetWorldTransform(PaintBox1.Canvas.Handle, OldXF);
PaintBox1.Canvas.TextOut(26, 6, 'CheckBox1');
end;
|