oblomsoe Skrevet 29. april 2005 Del Skrevet 29. april 2005 Jeg lurer på hvordan jeg kan få ett program til å dekke hele skjermen? Noe alla ett spill, slik at hverken den windows linja elns vises+hvordan folk kan legge ned det programmet så at det ligger på den systemtray..? Takk! Lenke til kommentar
Wedvich Skrevet 29. april 2005 Del Skrevet 29. april 2005 For å få til den første setter du BorderStyle på formen til bsNone, og sett WindowState til wsMaximized. Den andre er... vel... mer innviklet. Men hvis du gidder å høre skal jeg prøve å forklare. Lenke til kommentar
Wedvich Skrevet 30. april 2005 Del Skrevet 30. april 2005 Ok, har tenkt litt mer over det andre spørsmålet der, klødd meg litt i hodet og sett etter i gamle programmer jeg har laget og lignende, og nå mener jeg jeg husker hva det var for noe. Først av alt må du sette en del konstanter for å gjøre det litt enklere: const NIF_INFO = $10; NIF_MESSAGE = 1; NIF_ICON = 2; NOTIFYICON_VERSION = 3; NIF_TIP = 4; NIM_SETVERSION = $00000004; NIM_SETFOCUS = $00000003; NIIF_INFO = $00000001; NIIF_WARNING = $00000002; NIIF_ERROR = $00000003; NIN_BALLOONSHOW = WM_USER + 2; NIN_BALLOONHIDE = WM_USER + 3; NIN_BALLOONTIMEOUT = WM_USER + 4; NIN_BALLOONUSERCLICK = WM_USER + 5; NIN_SELECT = WM_USER + 0; NINF_KEY = $1; NIN_KEYSELECT = NIN_SELECT or NINF_KEY; TRAY_CALLBACK = WM_USER + $7258; Så er det noen typer som må defineres: type PNewNotifyIconData = ^TNewNotifyIconData; TDUMMYUNIONNAME = record case integer of 0: (uTimeout: UINT); 1: (uVersion: UINT); end; TNewNotifyIconData = record cbSize: DWORD; Wnd: HWND; uID: UINT; uFlags: UINT; uCallbackMessage: UINT; hIcon: HICON; szTip: array [0..127] of char; dwState: DWORD; dwStateMask: DWORD; szInfo: array [0..255] of char; DUMMYUNIONNAME: TDUMMYUNIONNAME; szInfoTitle: array [0..63] of char; dwInfoFlags: DWORD; end; Du vil trenge et par prosedyrer i klassen som inneholder formen: procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK; procedure AddSysTrayIcon; procedure DeleteSysTrayIcon; Deretter, under public-direktivet i klassen som hører til formen, legger du inn denne linjen: IconData: TNewNotifyIconData; Så må du legge inn prosedyrene vi definerte tidligere: procedure TMain.SysTrayIconMsgHandler(var Msg: TMessage); begin case Msg.LParam of WM_LBUTTONUP: { noe som skjer når brukeren klikker på tray-ikonet }; end; end; procedure TMain.AddSysTrayIcon; begin IconData.cbSize: = SizeOf(IconData); IconData.Wnd: = AllocateHWnd(SysTrayIconMsgHandler); IconData.uID: = 0; IconData.uFlags: = NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallbackMessage: = TRAY_CALLBACK; IconData.hIcon: = Application.Icon.Handle; IconData.szTip: = 'Navnet på programmet ditt'; if not Shell_NotifyIcon(NIM_ADD, @IconData) then ShowMessage('Feilmelding som sier at tray-ikonet ikke kunne opprettes'); end; procedure TMain.DeleteSysTrayIcon; begin DeallocateHWnd(IconData.Wnd); if not Shell_NotifyIcon(NIM_DELETE, @IconData) then ShowMessage('Feilmelding som sier at tray-ikonet ikke kunne fjernes'); end; Nå gjenstår det bare to små ting - når du vil at ikonet skal legges til tray'et, kjører du denne linjen her: AddSysTrayIcon; ... og når ikonet skal fjernes igjen, bruker du denne linjen: DeleteSysTrayIcon; Går ut ifra at du vet hvordan du skjuler/viser en form, så nå har du vel det du trenger å vite Lenke til kommentar
Format71 Skrevet 30. april 2005 Del Skrevet 30. april 2005 Ved å sette maximized til true vil ikke programmet dekke taskbaren eller andre eventuelle toolbars docket til kantene. De aller fleste fullskjermsspill benytter seg nok av DirectX i fullskjermmodus. Hvordan du ellers skal få det til å dekke taskbaren vet jeg ikke. -Vegar Lenke til kommentar
Wedvich Skrevet 30. april 2005 Del Skrevet 30. april 2005 Format71, som sagt, hvis BorderStyle er satt til bsNone, så vil programmet dekke hele skjermen når det maksimeres. Lenke til kommentar
Format71 Skrevet 2. mai 2005 Del Skrevet 2. mai 2005 hm.. Ja, så sannelig! Det var ukjent for meg. Ser ut til at en form med borderstyle = bsNone blir opprettet som et WS_POPUP-vindu, og popup-vinduer bryr seg ikke om at taskbaren er satt til always on top. Lærer stadig noe nytt.... -Vegar Lenke til kommentar
oblomsoe Skrevet 9. mai 2005 Forfatter Del Skrevet 9. mai 2005 (endret) Er litt ny på delphi, hvor skal jeg skrive inn const og type? Og på det med tray ikonet så får jeg en rekke feil mld..Antar vell at jeg skal legge AddSysTrayIcon; og DeleteSysTrayIcon; på en button elns? Og det med procedure og de procedure tingene så får jeg en rekke feil mld, det er blant annet: procedure TForm1.DeleteSysTrayIcon; Feil mld på den. IconData.cbSize: = SizeOf(IconData); på den, +noen til.. Og en lite ting som har skjedd av seg selv som plager meg, når jeg holder på dær jeg skriver koder så funker det ikke å markere ting og slette det/begynne å skrive så at det kommet bort, men jeg må begynne bakerts og ta bokstav for bokstav med backapse..:S Noen som vet hvor jeg fikser det? Takk.. Btw: Er det noe jeg må legge til i uses? EDIT: Her er koden: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; procedure BitBtn2Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK; procedure AddSysTrayIcon; procedure DeleteSysTrayIcon; private { Private declarations } public IconData: TNewNotifyIconData; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); begin AddSysTrayIcon; end; procedure TMain.SysTrayIconMsgHandler(var Msg: TMessage); begin case Msg.LParam of WM_LBUTTONUP: { noe som skjer når brukeren klikker på tray-ikonet }; end; end; procedure TForm1.AddSysTrayIcon; begin IconData.cbSize: = SizeOf(IconData); IconData.Wnd: = AllocateHWnd(SysTrayIconMsgHandler); IconData.uID: = 0; IconData.uFlags: = NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallbackMessage: = TRAY_CALLBACK; IconData.hIcon: = Application.Icon.Handle; IconData.szTip: = 'Navnet på programmet ditt'; if not Shell_NotifyIcon(NIM_ADD, @IconData) then ShowMessage('Feilmelding som sier at tray-ikonet ikke kunne opprettes'); end; procedure TForm1.DeleteSysTrayIcon; begin DeallocateHWnd(IconData.Wnd); if not Shell_NotifyIcon(NIM_DELETE, @IconData) then ShowMessage('Feilmelding som sier at tray-ikonet ikke kunne fjernes'); end; procedure TForm1.BitBtn2Click(Sender: TObject); begin DeleteSysTrayIcon; end; end. Og med det samme jeg er igang så har jeg noen spørsmål til: Jeg har lært at hvis det er noe jeg skal ha passord "beskyttet" så bruker jeg den enkel her: IF Edit1.text = '123456' then showmessage ('Riktig!'); IF Edit1.text > '123456' then showmessage ('Feil'); Og at hvis det er en tekst jeg vil lagre i en text fil så gjør jeg slik: var FileName: String; begin FileName := '1.TXT'; with Memo1.Lines do begin SaveToFile(FileName); end; Og for å hente tekst fra en txt fil så: var FileName: string; begin FileName := '1.TXT'; with Memo1.Lines do begin LoadFromFile(FileName); Men så lurte jeg på hva jeg skulle gjøre for at koden som ble skrevet inn i feks edit1 er teksten som står i txt fila? Har prøvd mange ting men enda ikke funnet noe som virker.. Og er det noen som vet en måte jeg kan gjøre til at den txt fila hvor "passordet" ligger kan bli kryptert? evt. at jeg lager det slikt at når noen vil bytte passord så lager programmet automatisk er kryptert test som den ligger i tekst filen og som den igjenn dekrypterer automatisk når noen prøver å skrive inn passordet hvis dere skjønner hva jeg mener? Elr hvis dere har noen andre gode forslag til hvordan jeg kan gjøre alt dette med passord? Takk.. Edit: Hehe..Når jeg så på innlegget selv nå så var det mye tull her gitt..men det gidder jeg ikke å gjøre noe med nå Natta! Endret 9. mai 2005 av oblomsoe Lenke til kommentar
gerri28 Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 Gå inn på SubSimple og last ned CoolTray Icon. Om du ikke vil bruke komponenten så ser du ivertfall hvordan man lager trayicon. Når det gjelder kryptering og koder så kan du gå til sourceforge.net og ta en titt på LockBox og OnGuard (bare søk etter de) så tror jeg du finner det du er ute etter. Lenke til kommentar
oblomsoe Skrevet 10. mai 2005 Forfatter Del Skrevet 10. mai 2005 (endret) Hm, jeg finner de programmene på sourceforge.net, men det er ingen projects realesed? Og er det en måte å gjøre til att ett program ikke vil lukke seg ved å trykke alt+F4? Slik at eneste måten å lukke det på er å trykke på en button som har kommandoen close;..? Og noen som vet hvordan jeg skal få til at det som blir skrevet inn i en edit boks skal sammenlignes med det i en txt fil? Slikt som jeg beskrev med en memo i en annen post..Og hvordan får jeg til å lagre innstillinger som brukerne har lagt til? Som feks bakrunsfarge osv? Fins det en mulighet for å rewrite scriptet mens noen bruker programmet elns? Takk Endret 10. mai 2005 av oblomsoe Lenke til kommentar
gerri28 Skrevet 11. mai 2005 Del Skrevet 11. mai 2005 Her har du en kode som gjør det meste du spør om, hvis du vil kryptere så kan du bruke TurboPower LockBox. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AppEvnts, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Button2: TButton; Label1: TLabel; Edit2: TEdit; Button3: TButton; procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } procedure wmSyscommand( var msg: TWMSyscommand ); message WM_SYSCOMMAND; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.wmSyscommand(var msg: TWMSyscommand); begin if (msg.CmdType and $FFF0) = SC_CLOSE then exit else inherited; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); var Stream:TFileStream; str:string; begin str := ''; Stream := TfileStream.Create('Test.txt',fmOpenRead); stream.Position := 0; SetLength(str,length(edit1.text)); try Stream.ReadBuffer(pointer(str)^,length(edit1.text)); except end; if str = edit1.text then showmessage('Riktig Passord') else showmessage('Feil Passord'); Stream.free; end; procedure TForm1.Button3Click(Sender: TObject); var Stream:TFileStream; str:string; begin Stream := TFileStream.Create('Test.txt',fmCreate); Stream.WriteBuffer(Pointer(Edit2.Text)^, Length(Edit2.Text)); Stream.Free; end; end. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå