Skocz do zawartości

[Delphi] Program bez obramowania


Sianoo

Polecane posty

Witam,

Mam kilka pytań dotyczących obiektowego programowania w delphi.

Pierwszym z nich jest to - jak sprawić, aby program nie posiadał kwadratowego obramowania, ani górnego paska z opcjami zwiń, zamknij, maksymalizuj.

Drugie pytanko - jak mogę ustawić tło w moim programie?

No i ostatnie - jak ustawić zdjęcie na buttonie, lub jakimkolwiek innym obiekcie?

 

Z góry thx ^_^

Link do komentarza
Udostępnij na innych stronach

Mam kilka pytań dotyczących obiektowego programowania w delphi.

Pierwszym z nich jest to - jak sprawić, aby program nie posiadał kwadratowego obramowania, ani górnego paska z opcjami zwiń, zamknij, maksymalizuj.

Ustaw własność BorderStyle formatki na bsNone.

Drugie pytanko - jak mogę ustawić tło w moim programie?

Można ustawić Image z własnością Stretch i Align na alClient oraz wczytać jakieś tło. Tak będzie chyba najprościej, ale są też komponenty do tworzenia skinów dla aplikacji. Pogoogluj sobie za nimi,

No i ostatnie - jak ustawić zdjęcie na buttonie, lub jakimkolwiek innym obiekcie?

TImage również może być pseudo Buttonem, a jeżeli chcesz wzbogacić inne kontrolki o Canvas i po inich rysować grafikę to musisz im taki Canvas dodać i obsłużyć odpowiednio komunikat WM_PAINT. Poniżej prosty przykład dla zmienionego TScrollBox.

unit canvasedscrollbox;
interface
uses
 Windows, Messages, Classes, Controls, Forms, Graphics;
type
 TCanvasedScrollBox = class(TScrollBox)
 private
FBmp: TBitmap;
FCanvas: TCanvas;
procedure SetBitmap(Value: TBitmap);
 protected
procedure WMPaint(var Message: TMessage); message WM_PAINT;
 public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Bitmap: TBitmap read FBmp write SetBitmap;
property Canvas: TCanvas read FCanvas;
 end;
implementation
constructor TCanvasedScrollBox.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents,
	csSetCaption, csDoubleClicks];
 Width := 185;
 Height := 41;
 BorderStyle := bsSingle;
 FBmp := TBitmap.Create;
 FCanvas := TControlCanvas.Create;
 TControlCanvas(FCanvas).Control := Self;
end;
destructor TCanvasedScrollBox.Destroy;
begin
 FBmp.Free;
 FCanvas.Free;
 inherited Destroy;
end;
procedure TCanvasedScrollBox.SetBitmap(Value: TBitmap);
begin
 FBmp.Assign(Value);
 SendMessage(Handle, WM_PAINT, 0, 0);
end;
procedure TCanvasedScrollBox.WMPaint(var Message: TMessage);
begin
 if Assigned(FBmp) then
Canvas.Draw(0, 0, FBmp);
 inherited;
end;
end.

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

Olesiu.... Wielkie dzięki, ale z tym tłem to Streth nie da się ustawić na alClient bo są tylko opcje True/False - ani no i nie widać label przy wstawionym Image o takich właściwościach.

a wiesz może jeszcze jak sprawić aby buttony były wyświetlane w stylu określonym przez użytkownika(np. Styl systemu Windows XP - bardziej zaokrąglone), a nie tylko w stylu klasycznym windows - jakieś kwadratowe?

Link do komentarza
Udostępnij na innych stronach

GUI?

http://en.wikipedia...._user_interface

 

http://pl.wikipedia....wanie_obiektowe

 

Ty napisałeś swojego posta tak jakbyś uważał programowanie obiektowe za takie, w którym używasz GUI (a nie tworzysz aplikacji konsolowej). Oczywiście są biblioteki pozwalające na programowanie GUI w sposób strukturalny. Powinieneś napisać, że masz pytania dotyczące używania VCL w Delphi :P

Link do komentarza
Udostępnij na innych stronach

http://en.wikipedia...._user_interface

 

http://pl.wikipedia....wanie_obiektowe

 

Ty napisałeś swojego posta tak jakbyś uważał programowanie obiektowe za takie, w którym używasz GUI (a nie tworzysz aplikacji konsolowej). Oczywiście są biblioteki pozwalające na programowanie GUI w sposób strukturalny. Powinieneś napisać, że masz pytania dotyczące używania VCL w Delphi :P

 

Nie chodziło mi o żadne GUI i jeśli cię zmyliłem to przepraszam bardzo, ale Olesio i tak wiedział przecież o co mi chodzi, więc i ty też zapewne mogłeś się domyślić. Poza tym napisałem, że mam kilka pytań dotyczących obiektowego programowania w delphi.

Link do komentarza
Udostępnij na innych stronach

Mogłem się domyślić, ale Ty dalej sprawiasz wrażenie, że nie wiesz o co chodzi :D Obiektowe programowanie to nie takie, że ustawiasz sobie graficznie "obiekty" na formatce, tylko chodzi o to, że używasz "programistycznych" obiektów własnych lub gotowych. Jak piszesz o VCL to możesz sobie darować termin "programowanie obiektowe", bo tylko w taki sposób używa się komponentów - poprzez wywoływanie odpowiednich metod na rzecz ich instancji.

 

Nie chodziło mi o żadne GUI

Jeśli chodziło Ci o komponenty w aplikacji okienkowej (przycisk z obrazkiem, forma bez belki tytułowej itp.), to właśnie chodziło Ci o GUI... Dlatego uważam, że wciąż nie odróżniasz programowania obiektowego od programowania z użyciem GUI :D Obiektowo możesz sobie nawet napisać program konsolowy. To po prostu łatwiejszy do utrzymania i wyobrażenia zapis kodu.

Link do komentarza
Udostępnij na innych stronach

Mogłem się domyślić, ale Ty dalej sprawiasz wrażenie, że nie wiesz o co chodzi :D Obiektowe programowanie to nie takie, że ustawiasz sobie graficznie "obiekty" na formatce, tylko chodzi o to, że używasz "programistycznych" obiektów własnych lub gotowych. Jak piszesz o VCL to możesz sobie darować termin "programowanie obiektowe", bo tylko w taki sposób używa się komponentów - poprzez wywoływanie odpowiednich metod na rzecz ich instancji.

 

 

Jeśli chodziło Ci o komponenty w aplikacji okienkowej (przycisk z obrazkiem, forma bez belki tytułowej itp.), to właśnie chodziło Ci o GUI... Dlatego uważam, że wciąż nie odróżniasz programowania obiektowego od programowania z użyciem GUI :D Obiektowo możesz sobie nawet napisać program konsolowy. To po prostu łatwiejszy do utrzymania i wyobrażenia zapis kodu.

 

Dobrze... dobrze, wiem co to programowanie obiektowe i skończmy już, bo to nie ma nic wspólnego z tematem.

Link do komentarza
Udostępnij na innych stronach

Sianoo: napisałem skrótowo, ale idzie się domyśleć co i jak zmienić z TImage. Przecież wiadomo Stretch na True rozciąga lub zmniejsza grafikę do rozmiarów TImage, natomiast Align ustawione na alClient rozciągnie całkowicie komponent do rozmiarów formatki.

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

  • 3 weeks later...

Najprostszą metodą na ustawienie tła formularza jest użycie komponentu TImage i wczytanie do niego pliku graficznego. jeśli chcesz zrobić to programowalnie polecam klasę TCanvas, jednak musiałbyś przy tym zagłębić się w tajniki rysowania w Delphi.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...