Toon posts:

[Delphi] Hoe SnapToGrid uitschakelen voor desktop icons

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoe kan ik met code SnapToGrid (uitlijnen op raster) uitschakelen,
voor de desktop icons?

Automatisch schikken kan ik zo aan/uit zetten:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function GetLVHan : HWnd;
begin
  Result := FindWindowEx(FindWindowEx(FindWindowEx(GetDesktopWindow,0, 'Progman', nil),0, 'SHELLDLL_DefView', nil),0, 'SysListView32', nil);
end;

Function SetState : Boolean;
  VAR
    lvHan : HWnd;
    L     : DWord;
begin
    lvHan  := GetLVHan;
    Result := False;
    WHILE True DO
      begin
      L := GetWindowLong(lvHan, GWL_STYLE);
      SetWindowLong(LvHan, GWL_STYLE, L xor LVS_AUTOARRANGE);
  exit;
End;
end;


Maar kan maar geen functie vinden voor SnapToGrid :(
Alle hulp gewaardeerd!

[ Voor 18% gewijzigd door Verwijderd op 26-05-2004 21:05 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

LVM_ARRANGE

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Al geprobeerd met LVM_ARRANGE. Dan staan mijn desktop icons alsof het een folder in Windows Verkenner is...
Misschien doe ik iets fout.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function CheckAlignToGrid : BOolean;
  VAR
    lvHan : HWnd;
    L     : DWord;
begin
    lvHan  := GetLVHan;
    Result := False;
    L := GetWindowLong(lvHan, GWL_STYLE);
    IF L AND LVM_ARRANGE = 0 THEN Result := True;
    exit;
end;

Function SetStateGrid : Boolean;
  VAR
    lvHan : HWnd;
    L     : DWord;
begin
    lvHan  := GetLVHan;
    Result := False;
    L := GetWindowLong(lvHan, GWL_STYLE);
    SetWindowLong(LvHan, GWL_STYLE, L xor LVM_ARRANGE);
    exit;
end;

[ Voor 68% gewijzigd door Verwijderd op 26-05-2004 20:58 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ten eerste, zeg dat dan meteen, er is zoiets als een Quickstart waar je je aan moet houden. Ten tweede is dat totaal niet de manier waarop je LVM_ARRANGE gebruikt. Er zou al een belletje moeten gaan rinkelen bij de naamgeving. Alle windows styles beginnen met LVS_, zou LVM_ARRANGE er dan ook een zijn? Nee dus

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Maar er bestaat natuurlijk niet zoiest als LVM_STYLE en heb alle mogelijke combinaties al geprobeerd die in de Windows SDK Help vermeld staan.

Volgens mij werkt het voor een listview anders dan voor de desktop, maar kan het mis hebben.
Als ik mbv de eerste geposte functie 'automisch schikken' verander dan blijft tenslotte ook het vinkje in het PopUpMenu staan van de desktop.

Heb wel LVA_SNAPTOGRID kunnen vinden, maar is geen style van LVS_STYLE :S
en volgens mij is LVM_ARRANGE alleen maar geschik om icons te rangschikken als
LEFT, RIGHT, BOTTOM en TOP.

[ Voor 71% gewijzigd door Verwijderd op 26-05-2004 21:16 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

(zucht)
http://msdn.microsoft.com.../messages/lvm_arrange.asp

C++:
1
SendMessage (lvHan, LVM_ARRANG, LVA_DEFAULT, 0);


LVA_DEFAULT arranget niets, LVA_ALLIGNLEFT en LVA_ALLIGNTOP allignen links en boven, en LVA_SNAPTOGRID snappen naar grid

[ Voor 4% gewijzigd door .oisyn op 26-05-2004 21:22 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Mijn vraag was:

Hoe kan ik met code SnapToGrid (uitlijnen op raster) UITSCHAKELEN!,
************

Deze code had ik al:
code:
1
2
3
4
5
6
7
8
9
procedure SnapToGrid;
var h:HWND;
begin
  h:=GetDesktopWindow;
  h:=FindWindowEx(h, 0, 'Progman', 'Program Manager');
  h:=FindWindowEx(h, 0, 'SHELLDLL_DefView', nil);
  h:=FindWindowEx(h, 0, 'SysListView32', nil);
  SendMessage(h,LVM_ARRANGE,LVA_SNAPTOGRID,0);
end;


Neem me niet kwalijk voor de opmerking

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

dat zeg ik, met LVA_DEFEAULT 8)7

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22-05 21:28

MBV

misschien door een andere waarde dan snaptogrid te kiezen?

edit:
sorry, ik wilde niet in de uitleg onderbreken :)

[ Voor 37% gewijzigd door MBV op 26-05-2004 21:32 ]


Verwijderd

Topicstarter
Met LVA_DEFAULT geef je de Ingestelde Sortering aan, maar kun je niet veranderen.
Zou eigenlijk LVA_DEFAULT instelling moeten kunnen veranderen...
beetje radeloos nu. Maar beiden bedankt voor jullie hulp.

Verwijderd

Topicstarter
Kan het zijn dat de status in het register wordt weggeschreven?
Kan in diverse zoekmachines hierover niets vinden.
Lijkt me best logisch, maar kan nu in regedit niet vinden zoals; SnapToGrid, AlignToGrid oid.

Verwijderd

Topicstarter
>Klein kickje<

niemand? geen Delphi wonder hier? ;)
Niet dat dit nou zo programmeertaal afhankelijk is maar goed.

Nog even klein dingetje:

Het contextmenu (van de desktop) leest zijn settings ook ergens (reg?) want er
staan vinkjes bij 'uitlijnen op raster' kan iemand me dan helpen met waar die opgeslagen worden?

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 16:04

alienfruit

the alien you never expected

Zal toch vast wel ergens wat C++ code zijn die je kant porten :)
Anders misschien een menu keuze/klik nabootsen :D

[ Voor 29% gewijzigd door alienfruit op 29-05-2004 01:21 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

De snap to grid is eigenlijk ook geen setting van een listview. Met die arrange message die ik eerder gaf (doet idd niet wat je wilt, my bad) kun je even snappen, maar er is geen setting die zorgt dat er gesnapt wordt zodra je een icoon verplaatst. Dit kun je natuurlijk wel zelf inbouwen door te luisteren naar verplaatsingen, wat de desktop waarschijnlijk ook doet. Als het je echt gaat om die snap to grid setting, kun je denk ik het beste even de registry induiken. Ik heb al even zitten kijken onder HKCU\software\microsoft\windows\currentversion\explorer, maar daar zie ik zo snel niets bij staan. Misschien moet je regmon (http://www.sysinternals.com) eens draaien, en dan kijken welke registry settings veranderen als je dat vinkje met de hand aan en uit zet.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Dank je .oisyn, heb je tip (regmon) geprobeerd. Krijg alleen nogal veel resultaten.
Probeer te filteren, maar lukt nog niet erg. Als ik eruit ben post ik hier het resultaat.

Verwijderd

Topicstarter
Kom er niet uit helaas, teveel en voor mij niets zeggende resultaten met Regmon.
Als iemand mij verder kan helpen hoor ik het graag.
Waarden als {1093453-234-1d-23213} etc zeggen mij namelijk niets, maar zouden wel de info kunnen bevatten die ik zoek.
Toch bedankt.
Pagina: 1