Avatar billede mtj111 Novice
28. juni 2005 - 10:37 Der er 23 kommentarer og
2 løsninger

100% StayOnTop

Hej

Mit Screenshotprogram (som tager billeder af hele skærmen og gemmer det direkte på harddisken) har en funktion, som tager et udsnit af skærmen (altså en rektangel x1,y1,x2,y2).
Til det formål har jeg lavet en Form3, som er 100% transparent, pånær en firkant som viser det område hvor billedet bliver taget.
Denne firkant skal være ovenpå ALLE ting på skærmen...

Problemet er at hvis jeg sætter Form3 på StayOnTop, bliver den nogen gange bagved, og hvis jeg maksimerer et program fra processlinjen, bliver det ikke synligt!

Det skal faktisk være som om firkanten er "brændt fast" på skærmen ;-)

Hvad kan jeg gøre?

Michael ;-)
Avatar billede mtj111 Novice
28. juni 2005 - 10:40 #1
Måden jeg har gjort formen transparent:

Sat TranparentColor til true, samt TransparentColorValue til ClFuchsia. Så har jeg selvfølgelig gjort form Fuchsia.

Selve firkanten har jeg tegnet med:
Canvas.Pen.Color:=clRed;
Canvas.Rectangle(649,112,979,360);

Michael
Avatar billede mtj111 Novice
28. juni 2005 - 10:46 #2
Kan man evt kun gøre den synlig på messenger-vinduet?

Altså når MSN messenger er aktivt, skal formen "poppe-op", og vise Form3?

Michael ;-)
Avatar billede stone Forsker
28. juni 2005 - 14:00 #3
Avatar billede mtj111 Novice
28. juni 2005 - 14:16 #4
Tak... Det vil jeg kigge på når jeg kommer hjem ;-)

Hvor finder du alt det henne... Du har jo svar på alt!

Michael ;-)
Avatar billede mtj111 Novice
28. juni 2005 - 16:58 #5
Hej

Nu er jeg kommet hjem, men eksempel 1 i linket... Hvordan kalder jeg den? At skrive ForceForegroundWindow er ikke nok...

Michael ;-)
Avatar billede stone Forsker
28. juni 2005 - 18:46 #6
du tildeler din form1 funktionen

ForceForegroundWindow(Form1.Handle);

husk at sætte din form.style := stayontop i properties

til hvor jeg finder alt det henne, ja nu er swisscenter et kanont sted at hente kode til delphi, og har de ikke lige en komplet kode vedr. ens project er der altid noget man kan ændre derfra.
Avatar billede stone Forsker
28. juni 2005 - 18:52 #7
vedr. msn så kunne man via kode tjekke om msn er aktivt eller er startet op - er den det så - form3.showmodal; men har ikke lige en løsning på det endnu....
Avatar billede mtj111 Novice
28. juni 2005 - 18:53 #8
ok... jeg prøver...

Michael ;-)
Avatar billede mtj111 Novice
28. juni 2005 - 18:58 #9
Det virker altså ikke :-(

Den kommer stadig bagved...


Ang. MSN... kan man så "tegne" på MSN's form?
Jeg tror at jeg vil koncentrere mig på MSN...

Michael
Avatar billede stone Forsker
28. juni 2005 - 19:00 #10
hmm det virker altså hos mig... det forstår jeg ikke

hovsa ggg

har du sat koden i oncreate for din form? så skulle de virke
Avatar billede stone Forsker
28. juni 2005 - 19:01 #11
koden = ForceForegroundWindow(Form1.Handle);
Avatar billede mtj111 Novice
28. juni 2005 - 19:02 #12
ja... den står i oncreate

Prøv at sætte din form til:
1) Windowstate:=WsMaximized
2) Transparentcolor:=true
3) transparentcolorvalue:=clfuchsia
4) Form1.color:=clfuchsia

Michael ;-)
Avatar billede stone Forsker
28. juni 2005 - 19:07 #13
nu har jeg kun d5 pro
og har ikke transparent

men hvis du vil kan jeg da gerne sende mit eksempel til dig så kan du prøve om det virker på din pc...

og transparenet mener jeg ikke kan gøre at den ikke vises stayontop
Avatar billede mtj111 Novice
28. juni 2005 - 19:08 #14
nej så kan det nok ikke lade sig gøre...

Nå, jeg gidder ikke at ture i det mere... smid et svar

Michael
Avatar billede stone Forsker
28. juni 2005 - 19:09 #15
oki
Avatar billede mtj111 Novice
28. juni 2005 - 19:10 #16
Og tak for hjælp!

Michael
Avatar billede stone Forsker
28. juni 2005 - 19:10 #17
hov hvilket styresystem har du, der var flere muligheder på swisscenter om det var win98 2000 osv
Avatar billede mtj111 Novice
28. juni 2005 - 19:11 #18
XP... Der er vist noget med at 98 (og flere) ikke understøtter Alpha eller transparens?!?

Michael ;-)
Avatar billede stone Forsker
28. juni 2005 - 19:13 #19
ja hvis de ikke gør det så kan du via kode mener jeg gøre dit vindue transparent så kommer du udover understøttelsen, og så burde det virke i xp - jeg har selv xp pro
Avatar billede mtj111 Novice
28. juni 2005 - 19:16 #20
også mig... eller det vil sige: Det er XP home jeg har installeret, men jeg har en fuld lovlig XP pro, liggende (jeg orker ikke at installere den lige nu) ;-)

Koden er her: www.pythia.dk > Tips > Transparent form under Win2K...

Michael
Avatar billede stone Forsker
28. juni 2005 - 19:16 #21
her er lige lidt guld fra swisscenter....

make a form transparent?

http://www.swissdelphicenter.ch/en/showcode.php?id=264
Avatar billede mtj111 Novice
28. juni 2005 - 19:20 #22
Min Delphi kan ikke lide linjen:
  (GetWindowLong(Form1.Handle, GWL_EXSTYLE) or WS_WX_TRANSPARENT));

den melder:
[Error] Unit1.pas(29): E2003 Undeclared identifier: 'WS_WX_TRANSPARENT'

Men skidt med det... det er også en ret ligemeget ting... det var bare en ekstra funktion... ;-)

Michael :-)
Avatar billede mtj111 Novice
28. juni 2005 - 19:21 #23
nårh... Jeg skulle læse teksten på SwissDelphiCenter... der står jo at den kun virker til 98/2000 ;-)
Avatar billede stone Forsker
28. juni 2005 - 19:30 #24
nej du har ret det eksempel sucks...

her er mit eget bud på en transparent form

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Brush.Style := bsClear;
Form1.BorderStyle := bsNone;
Avatar billede mtj111 Novice
28. juni 2005 - 20:58 #25
Det virker da godt nok... Men hvorfor maximeres form1 automatisk når man skriver de 2 linjer?

Men du skal have mange tak... Du behøves ikke komme med flere forslag... ;-)

Michael
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester