Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Форма


Автор: Slam_VS 15.10.2004, 17:00
Как сделать форму не кваратной?

Автор: Kesh 15.10.2004, 17:01
Руками...

Автор: Slam_VS 15.10.2004, 17:09
Вобщем я где то на форумах задал этот вопрос так подробно что офигеть можно...
Я даже привёл коды на C++Builder`e и Delphy. И потерял этот форум... Так что теперь даже не чего не хочу. sad.gif sad.gif sad.gif sad.gif sad.gif Как хотя бы круглую форму сделать?

Вообщето хочется по картинке вырезать, но это вряд ли... Ну кто если сможет...

Автор: GoodBoy 15.10.2004, 17:19
А причем тут базы данных?????

Автор: x77 15.10.2004, 17:38
GoodBoy, думаю, не при чём.

в сабж: http://forum.vingrad.ru/index.php?showtopic=17986

Автор: Alex 15.10.2004, 17:53
Как создать форму в форме элипса?
Код
procedure TForm1.FormCreate(Sender: TObject);
var
 Region: HRGN;
begin
 Region := CreateEllipticRgn(0, 0, 300, 300);
 SetWindowRgn(Handle, Region, True);
end;


Взято с Delphi Knowledge Base
http://www.baltsoft.com/

Как создать круглую форму?

Здесь приведён полный пример того, как создать круглую форму.
Не забудьте создать TButton, чтобы окно можно было закрыть.

Код
unit Unit1;  

interface  

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

type  
 TForm1 = class(TForm)  
   Button1: TButton;  
   procedure FormCreate(Sender: TObject);  
   procedure Button1Click(Sender: TObject);  
 private  
   { Private-Deklarationen}  
   procedure CreateParams(var Params: TCreateParams); override;  
 public  
   { Public-Deklarationen}  
 end;        

var  
 Form1: TForm1;  

implementation  

{$R *.DFM}  

{ TForm1 }  

procedure TForm1.CreateParams(var Params: TCreateParams);  
begin  
 inherited CreateParams(Params);  

 { удаляем заголовок и рамку }
 Params.Style := Params.Style or ws_popup xor ws_dlgframe;  
end;  

procedure TForm1.FormCreate(Sender: TObject);  
var  
 FormRgn: hRgn;  
begin  
 {clear form}  
 Form1.Brush.Style := bsSolid; //bsclear;  
 { делаем круг формы }  
 GetWindowRgn(Form1.Handle, FormRgn);  

 { удаляем старый объект }  
 DeleteObject(FormRgn);  
 { делаем прямоугольник формы }
 Form1.Height := 500;  
 Form1.Width := Form1.Height;  
 { создаём круглую форму }  
 FormRgn := CreateRoundRectRgn(1, 1, Form1.Width - 1,  
            Form1.height - 1, Form1.width, Form1.height);  

 { устанавливаем новое круглое окно }
 SetWindowRgn(Form1.Handle, FormRgn, TRUE);  
end;  

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 Form1.close;  
end;  

end.


Взято с Исходников.ru http://www.sources.ru

Как создавать не квадратные формы и контролы?

Всё, что нам нужно, это HRGN и дескриптор (handle) элемента управления. SetWindowRgn имеет три параметра: дескриптор окна, которое будем менять, дескритор региона и булевый (boolean) параметр, который указывает - перерисовывать или нет после изменения. Как только у нас есть дескриптор и регион, то можно вызвать SetWindowRgn(Handle, Region, True) и вуаля!

Здесь приведён пример использования функции BitmapToRgn (описанной в примере Как создать регион(HRNG) по маске).

Заметьте, что Вы не должны освобождать регион при помощи DeleteObject, так как после вызова SetWindowRgn владельцем региона становится операционная система.

Код
var  
 MaskBmp: TBitmap;  
begin  
 MaskBmp := TBitmap.Create;  
 try  
   MaskBmp.LoadFromFile('FormShape.bmp');  
   Height := MaskBmp.Height;  
   Width := MaskBmp.Width;  
   // ОС владеет регионом, после вызова SetWindowRgn
   SetWindowRgn(Self.Handle, BitmapToRgn(MaskBmp), True);  
 finally  
   MaskBmp.Free;  
 end;  
end;


Взято с Исходников.ru http://www.sources.ru

Автор: Slam_VS 16.10.2004, 10:31
Дело в том что енто круглое окно мне в Access`e надо сделать !!! А так я хоть полупрозрачную кнопку в виде дерева с листиками могу сделать... мне енто в басике надо вот я вас и спрашиваю так как вы должны его юзать, чтобы в Access`e быть спецами !!!

Автор: Alex 16.10.2004, 10:55
Цитата(Slam_VS @ 16.10.2004, 11:31)
Дело в том что енто круглое окно мне в Access`e надо сделать !!! А так я хоть полупрозрачную кнопку в виде дерева с листиками могу сделать... мне енто в басике надо вот я вас и спрашиваю так как вы должны его юзать, чтобы в Access`e быть спецами !!!

Ты, по-моему, тогда не в тот раздел, вопрос задал.

Автор: Slam_VS 16.10.2004, 10:59
Как это, программирование->Базы дынных !
А Access это одна из лучших СУБД !
OK задал этот вопрос программистам VBasic`a !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)