Скруглённый TEdit
Модератор: Модераторы
Скруглённый TEdit
Подскажите компонент типа TEdit со скруглёнными углами.
Или как у обычного TEdit скруглить углы не гася у него "BorderStyle"...
Или как у обычного TEdit скруглить углы не гася у него "BorderStyle"...
Сделать наследника со своим методом прорисовки.
wadman писал(а):Сделать наследника со своим методом прорисовки.
Я думал, может кто-то уже сделал...
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Vadim писал(а):Я думал, может кто-то уже сделал...
Я пытался сделать нечто подобное viewtopic.php?f=5&t=25585#p127093
Сейчас даже не найду исходников.
Долго, муторно и ноги после этого болят(((
Я пока остановился на "составном" варианте - обычный TEdit без рамки, а вокруг скуглённый TShape как рамка... 
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Vadim, ну да, это проще.
Тем более, что тебе все равно пришлось бы использовать TShare, для придания формы... Ну или самому делать картинку-фон, но это уже похуже.
Тем более, что тебе все равно пришлось бы использовать TShare, для придания формы... Ну или самому делать картинку-фон, но это уже похуже.
Vadim писал(а):Я пока остановился на "составном" варианте - обычный TEdit без рамки, а вокруг скуглённый TShape как рамка...
покажи, как сделал...
Дык всё просто - наложил один компонент на другой и всё. Только размеры Shape сделал побольше, чем у Edit, чтобы не загораживал...
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
А вот как правильно. Возможно, что кто-то сделает лучше
Код: Выделить всё
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.
Спасибо, комрады. Посмотрю на досуге.
зы. а вот если б еще выложить пример, экспортированный в демку, было б шикарно. Лень ручками забивать
зы. а вот если б еще выложить пример, экспортированный в демку, было б шикарно. Лень ручками забивать
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
zoltanleo, куда выложить? Могу зипом на гуглодрайв. Пойдет?
Добавлено спустя 8 минут 4 секунды:
вот ссылка https://drive.google.com/file/d/1nySpyZ ... sp=sharing
Добавлено спустя 8 минут 4 секунды:
вот ссылка https://drive.google.com/file/d/1nySpyZ ... sp=sharing
Лекс Айрин писал(а):вот ссылка
Спасибо большое. Емнип, тут есть возможность файлы к сообщению аттачить
Вот мой пример:
Добавлено спустя 1 минуту 2 секунды:
Вот как выглядит.
Добавлено спустя 1 минуту 2 секунды:
Вот как выглядит.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Лекс Айрин
А если на форму поместить белочек и бурундучков, будет ещё интереснее...
А если на форму поместить белочек и бурундучков, будет ещё интереснее...

