AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bewegen von forms ohne Titlebar

Ein Thema von HaTe · begonnen am 3. Feb 2004 · letzter Beitrag vom 23. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
HaTe

Registriert seit: 3. Feb 2004
Ort: Trier
14 Beiträge
 
Delphi 6 Enterprise
 
#1

Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 14:42
hmmm, ka ob das hier hin gehört, glaub aber schon

also, hier is ma der gesammte code von meinem prog:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,menus, StdCtrls,shellapi, CoolTrayIcon;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    CoolTrayIcon1: TCoolTrayIcon;
    beenden1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure beenden1Click(Sender: TObject);
  private
    { Private declarations } 
  public
    {procedure HandleLBtnDn(var msg: TMessage); message WM_LBUTTONDOWN;} 
    procedure WMNCHitTest(var msg: TWMNCHitTest);
    procedure PopupMenuItemsClick(Sender: TObject);
  end;

var
  neuform:tform;
  Form1: TForm1;
  sl2:tstringlist;
implementation

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject);
var sl3:tstringlist;
    sl1:tstringlist;
    i,m:integer;
    pm:tpopupmenu;
    newitem:tmenuitem;
    bm:tbitmap;
    hwndOwner: HWnd;
begin

sl3:=tstringlist.create;
sl2:=tstringlist.Create;
sl1:=tstringlist.create;
sl1.loadfromfile('count.cnt');
for i:=1 to strtoint(sl1[0]) do
 begin
   sl3.loadfromfile('mens/pos'+inttostr(i)+'.txt');
   sl2.LoadFromFile('mens/'+inttostr(i)+'.txt');
   neuform:=tform.Create(form1);
     with neuform do
       begin
         bm:=tbitmap.create;
         bm.LoadFromFile('mens/'+inttostr(i)+'.bmp');
         name:='nform'+inttostr(i);
         top:=strtoint(sl3[1]);
         left:=strtoint(sl3[0]);
         borderstyle:=bsnone;
         height:=32;
         width:=32;
         pm:=tpopupmenu.create(self);
           with pm do
             for m :=0 to (sl2.Count div 2) -1 do
             begin
               NewItem := TMenuItem.Create(pm);
               Items.Add(NewItem);
               NewItem.Caption := sl2[m*2];
               NewItem.Tag := m;
               NewItem.OnClick := PopupMenuItemsClick;
               name:='pm'+inttostr(i);
             end;
         popupmenu:=pm;
         show;
         canvas.Draw(0,0,bm);
       end;
  end;
width:=0;
height:=0;
sl1.clear;
sl3.clear;
sl2.Clear;
hwndOwner := GetWindow(Handle, GW_OWNER);
ShowWindow(hwndOwner, SW_HIDE);
ShowWindowAsync(hwndOwner, SW_HIDE);
ShowWindowAsync(Self.Handle, SW_HIDE);
end;

procedure TForm1.PopupMenuItemsClick(Sender: TObject);
var x:tmenu;
begin
  x:=TMenuItem(Sender).GetParentMenu;
  sl2.LoadFromFile('mens/'+inttostr((x.componentindex div 2) - 1)+'.txt');
  with Sender as TMenuItem do
  begin
    ShellExecute(Handle, 'open',pchar(sl2[(tag*2+1)]) , nil, nil, SW_SHOW);
  end;
end;

procedure TForm1.WMNCHitTest(var msg: TWMNCHitTest);
begin
  inherited;
  if msg.Result = htClient then
    msg.Result := htCaption;
end;

procedure TForm1.beenden1Click(Sender: TObject);
begin
application.terminate;
end;

{procedure TForm1.HandleLBtnDn(var msg: TMessage);
begin
  Sendmessage(Self.Handle, WM_NCLBUTTONDOWN, HTCAPTION, msg.LParam);
end;}
 
end.
da die ganzen forms keine Titlebar haben möchte ich die procedure
Delphi-Quellcode:
procedure TForm1.WMNCHitTest(var msg: TWMNCHitTest);
begin
  inherited;
  if msg.Result = htClient then
    msg.Result := htCaption;
end;
verwenden um sie zu verschieben. Geht auch bei form1 das problem is allerdings das es ne procedure für form1 is, das/die ja von anfang an existiert. die neuen forms brauchen also nen aufruf dieses befehls , und dafür muss ich wissen was ich bei der zuweisung anstelle des
(var msg: TWMNCHitTest)
einsetzen muss, und da das das 1. prog is das ich bisher geschrieben hab was fast ganz aus zur laufzeit erstellten komponenten besteht und es auch das 1. mal is das ich sowas wie
WMNCHitTest(var msg: TWMNCHitTest); benutze is das msg-ding für mich n bissel verwirrend und ich steh son bischen aufm schlauch.

PS: Sry wegen dem Code, is nochn bischen Chaotisch und (vielleicht) n bischen lang fürn forum
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 15:17
Delphi-Quellcode:
type
  TMyForm = class(TForm)
  private
  public
    procedure WMNCHitTest(var msg: TWMNCHitTest);
  end;
Und dann mit

Delphi-Quellcode:
  neuform:=TMyform.Create(form1);
  with neuform do
erstellen.
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
HaTe

Registriert seit: 3. Feb 2004
Ort: Trier
14 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 15:28
lol, werd ich sofort probiern

hmmm, gibt beim compilieren immer ne errorbox mit "expected ':' but '=' found"
  Mit Zitat antworten Zitat
HaTe

Registriert seit: 3. Feb 2004
Ort: Trier
14 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 19:53
Problem gelöst, ich benutz jetz einfach ne komponente, is einfacher als sich wirklich damit zu beschäftigen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 20:00
Warum nimmst du nicht einfach
Delphi-Quellcode:
   ReleaseCapture;
   perform(WM_SysCommand, $F012, 0);
Wie willst du dein Form überhaupt verschieben? Per maus anklicken zu woanders hinziehen oder einfach neue postion angeben?? Im Betreff steht ja nur "Bewegen von forms ohne Titelbar" und mehr außer dem quelltext ist ja nicht zu finden
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
HaTe

Registriert seit: 3. Feb 2004
Ort: Trier
14 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 20:29
1: mit ner komponente isses bequemer
2: per drag weil die neuen forms wenns programm fertig is einfach wie desktop icons platzierbar sein sollen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 20:43
Vergiss die Kompo und hör auf den guten alten Matze

So geht das von SirThornberry:

Delphi-Quellcode:
procedure TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) then
  begin
    Application.ProcessMessages;
    ReleaseCapture;
    Perform(WM_SYSCommand, $F012, 0);
  end;
end;
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#8

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 21:02
Vor dem Problem stand ich gestern.

Guckst du hier:

http://www.delphipraxis.com/topic177...tml&highlight=

Meine Lösung gefällt mir mittlerweile sehr gut!
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
HaTe

Registriert seit: 3. Feb 2004
Ort: Trier
14 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Bewegen von forms ohne Titlebar

  Alt 3. Feb 2004, 22:38
hmmm, die kompo gefällt mir eigendlich sehr gut, muss jetz nur nochn weg findn das die popups aufpoppen obwohl windows denkt ich würde auf die titlebar clickn und (eher nebensächlich) die sch**** canvas dazu bringen, die symbole richtig anzuzeigen wenn n fenster etc drübergezogen wurde
btw, weiss schon wer wasses werden soll?
  Mit Zitat antworten Zitat
HaTe

Registriert seit: 3. Feb 2004
Ort: Trier
14 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Bewegen von forms ohne Titlebar

  Alt 4. Feb 2004, 15:58
lol, brauch nochma hilfe: die kompo is nett, aber sie arbeitet ein bischen ZU gut. sie simuliert bei ALLEN clicks auf das form und kompos darauf (zb images etc.) einen click auf die titlebar, und jetzt hab ich keine ahnung wie ich die popupmenüs benutzen soll, also hier meine frage: ist es möglich irgendwie der titlebar eines zur laufzeitt erstellten forms ein eigenes popupmenü zuzuweisen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz