Конференция "Компоненты" » Как сделать компонент на основе TButton и TCheckbox
 
  • ВОВА (20.12.07 22:52) [0]
    НУжно создать компонент на основе TButton и TCheckbox
    штоб принажатии кнопки TCheckbox поворачивался на 45 градусов
  • Гость (20.12.07 23:01) [1]
    Имеется ввиду просто поворот "МестоГдеставитьсяГалочка" на произвольный угол ?
  • ВОВА (20.12.07 23:03) [2]
    да на 45 градусов.
  • {RASkov} © (20.12.07 23:10) [3]
    > [0] ВОВА   (20.12.07 22:52)

    > Как сделать компонент на основе TButton и TCheckbox
    ....
    > штоб принажатии кнопки TCheckbox поворачивался на 45 градусов

    никак

    Тебе наверняка не компонент ведь нужен, так? "Обрисуй" задачу....
  • ВОВА (20.12.07 23:22) [4]
    Ставиться задача создания компонента на основе CheckBox у которого будет метод rotate поворачивающее компонентна 45 градусов
  • ВОВА (20.12.07 23:25) [5]
    Можно его неповорачивать а просто изменить внешний вид на ромб с крестиком внутри
  • {RASkov} © (21.12.07 00:17) [6]
    > [4] ВОВА   (20.12.07 23:22)
    > Ставиться задача создания компонента на основе CheckBox
    > у которого будет метод rotate поворачивающее компонентна
    > 45 градусов

    > [5] ВОВА   (20.12.07 23:25)
    > Можно его неповорачивать а просто изменить внешний вид на
    > ромб с крестиком внутри

    врядли получится задуманное с TCheckBox'ом....

    Могу посоветовать создать новый компонент, потомок TGraphicControl'а в котором и рисовать, например функцией DrawFrameControl, свой чекбокс и при необходимости "крутить" канву...
  • ВОВА (21.12.07 02:24) [7]
    Пасиб.. а можна пример кода такого компонента
  • Германн © (21.12.07 03:38) [8]
    Вопросы по решению учебных задач у нас принято переносить в "Прочее" или в "Начинающие". Тем более если не приведя ни одной строчки своего кода, просят "пример".
  • {RASkov} © (21.12.07 12:10) [9]
    > [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;


    Вот метод Паинт будет ядром твоего компонента....
    Само собой разумеется, что это не полное и не идеальное описание этого компонента, что бы все правильно сделать - нужно его делать, тестировать, опять делать, исправлять ошибки..... вообщем это не моя задача, а твоя) Если что конкретно будет непонятно, то спрашивай...
  • DimaBr © (24.12.07 10:31) [10]
    Вот пример вращения текста

    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;

  • {RASkov} © (24.12.07 13:07) [11]
    > [10] DimaBr ©   (24.12.07 10:31)

    Привет)
    Ему текст вроде бы не нужно крутить, а только сам "квадратик" повернуть на 45 гр. чтоб ромб получился...

    > Можно его неповорачивать а просто изменить внешний вид на ромб с крестиком внутри

    >
    Хотя... он что-то молчит.... обиделся наверное :), пример кода не дали :(
  • DimaBr © (24.12.07 13:25) [12]
    В шрифте Wingdings трудно отыскать буквы
  • {RASkov} © (24.12.07 14:12) [13]
    > В шрифте 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 {DFCS_CHECKED});
     SetWorldTransform(PaintBox1.Canvas.Handle, OldXF);
     PaintBox1.Canvas.TextOut(26, 6, 'CheckBox1');
    end;

 
Конференция "Компоненты" » Как сделать компонент на основе TButton и TCheckbox
Есть новые Нет новых   [134463   +60][b:0][p:0.002]