Скруглённый TEdit

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Скруглённый TEdit

Сообщение Vadim »

Подскажите компонент типа TEdit со скруглёнными углами.
Или как у обычного TEdit скруглить углы не гася у него "BorderStyle"...
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

Сделать наследника со своим методом прорисовки.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

wadman писал(а):Сделать наследника со своим методом прорисовки.

Я думал, может кто-то уже сделал... :D
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vadim писал(а):Я думал, может кто-то уже сделал...


Я пытался сделать нечто подобное viewtopic.php?f=5&t=25585#p127093
Сейчас даже не найду исходников.
Долго, муторно и ноги после этого болят(((
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Я пока остановился на "составном" варианте - обычный TEdit без рамки, а вокруг скуглённый TShape как рамка... :-)
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Vadim, ну да, это проще.

Тем более, что тебе все равно пришлось бы использовать TShare, для придания формы... Ну или самому делать картинку-фон, но это уже похуже.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Vadim писал(а):Я пока остановился на "составном" варианте - обычный TEdit без рамки, а вокруг скуглённый TShape как рамка...

покажи, как сделал...
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Дык всё просто - наложил один компонент на другой и всё. Только размеры Shape сделал побольше, чем у Edit, чтобы не загораживал...
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

А вот как правильно. Возможно, что кто-то сделает лучше :lol:

Код: Выделить всё

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
  Buttons;

type

  { TForm1 }

  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure Edit1Change(Sender: TObject);
  private

  public
     Procedure DrawEdit (AControl: TWinControl);
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormActivate(Sender: TObject);
begin
  Form1.DrawEdit(Edit1);
end;

procedure TForm1.DrawEdit(AControl: TWinControl);
Var
  ABitmap: Graphics.TBitmap;// окно
  Rect:TRect;

begin
  ABitmap := Graphics.TBitmap.Create;
  ABitmap.Monochrome :={ True; //}False;
  ABitmap.Width := AControl.Width;
  ABitmap.Height := AControl.Height;
  Rect.Create(0 ,0, ABitmap.Width, ABitmap.Height);
   with ABitmap.Canvas do
  begin
    Brush.Color := clBlack; // transparent color
    FillRect(0, 0, ABitmap.Width, ABitmap.Height);
    Brush.Color := clWhite; // mask color
    RoundRect(Rect,20,20)//цифры величина закругления
  end;
  AControl.SetShape(ABitmap);
  ABitmap.Free;
end;

end.

Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Спасибо, комрады. Посмотрю на досуге.

зы. а вот если б еще выложить пример, экспортированный в демку, было б шикарно. Лень ручками забивать :)
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

zoltanleo, куда выложить? Могу зипом на гуглодрайв. Пойдет?

Добавлено спустя 8 минут 4 секунды:
вот ссылка https://drive.google.com/file/d/1nySpyZ ... sp=sharing
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Лекс Айрин писал(а):вот ссылка

Спасибо большое. Емнип, тут есть возможность файлы к сообщению аттачить
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Вот мой пример:

Добавлено спустя 1 минуту 2 секунды:
Вот как выглядит.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

zoltanleo писал(а):Емнип, тут есть возможность файлы к сообщению аттачить


Если бы... то ли из-за того, что ты топикстартер, толь просто не хватает прав, но у меня не получается.

Vadim писал(а):Вот как выглядит.


У меня чуть интереснее))

Изображение
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Лекс Айрин
А если на форму поместить белочек и бурундучков, будет ещё интереснее... :-D
Ответить