Gå til innhold

Noen spørsmål om Delphi!


Anbefalte innlegg

Hei hei! :)

 

Jeg har begynt å lage noen små programmer i Delphi i det siste, og det går ganske bra synes jeg. :)

Men det er Noen ting jeg lurer på:

 

1. Hvordan kan man lage en lenke til en webside?

 

2. Hvordan kan man åpne/lukke cd-skuffen?

 

3. Går det ann å ta bort de tre ikonene øverst i høyre hjørnet? (minimer, gjenopprett/maksimer og lukk)

 

4. Hvordan kan man vise dato og tid (basert på pc-klokka)?

 

Takk for hjelpen! ;)

 

Bruker Delphi 6 Personal.

 

Edit: Endret noen skriveleifer. ;)

Endret av @kd
Lenke til kommentar
Videoannonse
Annonse

1. Aktiv lenke til en webside:

 WinExec (PChar ('rundll32 url.dll, FileProtocolHandler HTTP://www.hardware.no'),
   SW_MAXIMIZE);

Kanskje den enkleste metoden, men ikke den aller beste. Eksemplet åpner http://www.hardware.no. Du kan bruke denne koden i forbindelse med klikk på en label, for eksempel.

 

2. Åpne CD-skuffa så du kan sette en kaffekopp eller eller juleølet der:

mciSendstring ('SET CDAUDIO DOOR OPEN WAIT', nil, 0, Self.Handle);

Den kan lukkes med :

mciSendstring ('SET CDAUDIO DOOR CLOSED WAIT', nil, 0, Self.Handle);

Disse to er også såpass enkle at du slipper å programmere deg i hjel. Begge bruker (Uses) mmSystem.

 

Juletips: Plasser en Timer og en Mediaplayer på formularet ditt. I timerens OnTimer plasserer du koden for åpning og lukking av DC-skuffa. Sett Interval til ca. 3 sekunder (3000 msek). Sett mediaplayeren til å spille av en kort wav-fil med en eller annen luguber lyd. Latter eller s*e*x lyd. Garantert festlig for de med litt spesiell humor når CD-luka jokker inn og ut...

 

3. Sett alle formularets BorderIcons til False.

 

4. Plasser en label på formularet:

Label1.Caption:= DateTimeToStr (Now);

For å få en digital løpende klokke må du bruke denne koden med en timer, og plasser koden i timerens OnTimer.

 

God jul til alle programmerere!

Lenke til kommentar

Har nå fått testet kodesnuttene dere ga meg.

 

_Wolfman_: Det funka ikke, selvom jeg la til shellapi i uses.

 

Tasle:

1: Funka ikke, det kom en errormessage, tror det var ettelerannet med rundll32.dll

eller noe. (Testa det på en maskin som ikke er koblet til internett, kanskje det er grunnen? :green: )

 

2: Funka bra, men det tok en liten stund før cd-skuffen reagerte (mulig det er pc-en min).

 

3: Funka. :thumbup:

 

4: Funka. :thumbs:

 

Har også noen spørsmål til: :D

 

5: Kan man fjerne programmet for listen som kommer opp når man trykker ctrl+alt+del?

 

6: Kan man gjøre det sånn at det kommer opp en melding hvis du prøver å avslutte programmet? (Er du sikker på at du vil avslutte? Eller noe...) Må funke med Alt+F4 også.

 

God jul!! :xmas:

Endret av @kd
Lenke til kommentar

1:

Du må nok være tilkoplet Internett for å kunne åpne en gitt URL, med mindre URL'en er lokal på din maskin.

 

2:

Det er vel en viss forskjell i hurtigheten på de forskjellige CD-stasjonene. Min er akseptabel kvikk til å reagere, men på min bærbare går det litt tregere.

 

5:

Utdyp det litt nærmere. Jeg skjønner ikke spørsmålet helt. Skal programmet ikke vises i prosessoversiketen (oppgavebehandling) når du trykker på Ctrl-Alt-Del ?

 

6:

I skjemaet OnClose legger du inn en MessageDlg :

 If MessageDlg ('Virkelig avslutte?', mtConfirmation, [mbYes, mbNo], 0) = mrNo Then
   Exit;

Denne bruker (Uses) Dialogs.

Lenke til kommentar

I Win9x var det en funksjon som heter RegisterServiceProcess, men den var avhenging av av KERNEL32.DLL. Kernel32. Dll har endret seg i de forskjellige versjonene av Windows, og XP har visst ikke lenger RegisterServiceProcess i sin opprinnelige form.

 

Det nærmeste jeg kommer i farta vil ikke skjule programmet i oppgavebehandling, men skjule programmet fra oppgavelinja med

 ShowWindow (Application.Handle, SW_HIDE);
 SetWindowLong (Application.Handle, GWL_EXSTYLE, GetWindowLong (Application.Handle, GWL_EXSTYLE) Or WS_EX_TOOLWINDOW);
 ShowWindow (Application.Handle, SW_SHOW);

Denne må du ha i programmets OnCreate.

 

Alternativet er å sette opp programmet som en service i WinXP, men det krever litt mer programmering for å implementere det ordentlig. Ulempen er at programmet vil kjøre selv om brukeren logges av og ny logges inn.

 

Hvis du søker på Internett på dette temaet kan det hende at du kommer over en komponent som fikser dette.

Lenke til kommentar
  • 3 uker senere...
I Win9x var det en funksjon som heter RegisterServiceProcess, men den var avhenging av av KERNEL32.DLL. Kernel32. Dll har endret seg i de forskjellige versjonene av Windows, og XP har visst ikke lenger RegisterServiceProcess i sin opprinnelige form.

Merket at det ikke funket helt bra ja... :D

Men finnes det en annen måte å gjøre det på? (åpne webside når man foreksempel trykker på en Label).

Lenke til kommentar
Men finnes det en annen måte å gjøre det på? (åpne webside når man foreksempel trykker på en Label).
procedure TForm1.Label1Click(Sender: TObject);

 

begin

 

  ShellExecute(Handle, 'open', PChar('http://www.sol.no/'), nil, nil, SW_SHOW);

 

end;

 

Åpner i default browser.

 

procedure TForm1.Label1Click(Sender: TObject);

 

begin

 

  ShellExecute(Handle, 'open', PChar('C:\Programfiler\Opera7\opera.exe'),

 

    ' "http://www.sol.no/" ', nil, SW_SHOW)

 

end;

 

Åpner i Opera (f.eks.)

 

Har ikke testa i NT/XP-flavours....

Lenke til kommentar

Dino_: Takk for hjelpen, det funka bra (måtte legge til shellapi i uses) :D

 

Tasle: Takk til deg også, nå synes ikke programmet... :D

 

Har også et nytt spørsmål:

 

Hvordan kan jeg få programmet til å endre innholdet i en fil?

:)

Lenke til kommentar

Bare hyggelig å kunne hjelpe :yes: .

 

Hvordan kan jeg få programmet til å endre innholdet i en fil?

:)

Det er tre ting du må gjøre for å endre innholdet i di fil:

 

1* lese fila inn i minnet

2* redigere til ønsket resultat

3* lagre fila på harddisken din.

 

Enkelt ikke sant? :yes:

Dette gjelder all filredigering, uansett type fil. det gjelder bare å gjøre det på rett måte :D

 

Det aller enkleste er å redigere en text.fil,

 

Du leser fila inn i minnet, og kansje lagrer du den i et memo? :

 

procedure TForm1.lesefil(Sender: TObject);
begin
 memo1.Lines.LoadFromFile('c:\windows\win.ini');
end;

 

 

her i memoet kan du da redigere det som står i fila, så skal du lagre...

 

procedure TForm1.lagrefil(Sender: TObject);
begin
 memo1.Lines.SaveToFile('c:\windows\win.ini');
end;

 

merk! ikke kødd med win.ini uten å vite hva du gjør!!! bare så det er sagt!

 

Du har også andre muligheter, du kan for eksempel laste fila inn i minnet uten å bruke en memo, men heller bruke en TStringList (denne må du kalle ved å bruke create ved programoppstart, les i hjelpefila, mange fine eksempel..).

Her lagrer du file, mens du kan få programmet til å lete etter spesielle fragment i fila, bytte dem ut med forhandsvalgte data, og så lagrer du fila etterpå.

 

Dette prinsippet kan man også bruke for å lage en patch til en binærfil, men da må man huske på at det er en binærfil man behandler. og ikke en textfil.

 

Lykke til.

 

Have fun! :green:

Lenke til kommentar
Hvordan kan jeg få programmet til å endre innholdet i en fil?

TFileStream

 

-Vegar

Kan du utdype det litt mere? :D

 

Dino_: Takk (igjen :p) for raskt og godt svar! :)

Har kødda litt med win.ini fila før, jeg... :p

Det gikk ikke så VELDIG bra... Hehe! ;)

Lenke til kommentar
Kan du utdype det litt mere? :D

Opprette/Skrive til en fil:

 

procedure SkrivTilFil(Filnavn: string);
var
 fs: TFileStream;
begin
 fs := TFileStream.Create(Filnavn, fmCreate or fmShareCompat);
 try
   fs.Write(.....)
 finally
   fs.free;
 end;
end;

 

Åpne og lese fra en fil:

procedure LesFraFil(filnavn: string);
var
 fs: TFileStream;
begin
 fs := TFileStream.Create(Filnavn, fmOpenRead or fmShareCompat);
 try
   fs.Read(...)
 finally
   fs.free;
 end;
end;

 

Sjekk hjelpefila for informasjon om hvordan Write( ) og Read( ) metodene fungerer.

 

-Vegar

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...