Mad_Maxille !

Eli tos jonkun aikaa sitten olit vastannut
sellaiseen lähettämääni viestiin , jossa kyse oli
oman ikonin lisääminen windowsin työkalupalkkiin
delphissä. Niimpä en saanut koodiasi toimimaa
oikein kunnolla kohdassa:

// PUBLIC osaan laitat sitten näin..
procedure IconMessage( var Msg : TMessage );
message WM_USER
100;

Eli delphissä public osahan näyttää alussa tältä:

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

Eli siinähän se on, niin minä lisäsin koodisi
siihen seuraavalla tavalla :

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
------------------------------------------------
procedure IconMessage( var Msg : TMessage );
message WM_USER
100;
------------------------------------------------
{ Public declarations }
end;

eli vaikka tolleen, miten se pitäisi lisätä ?
kyllä lisäsin sen vielä muutmalla eri tavalla ,
mutta ei mahtanut lähteä toimimaan..?

Eli tarkoititko tota lisäystä seuraavalla
esimerkillä minkä annoin ?
4261
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Näytti olevan ihan OK. Toi IconMessage Proseduuri
on vaan esimerkki voit jättää sen kokonaan pois,
ja/tai kirjoittaa halutessa oman. Olen kääntänyt
koodin Delphi2, 3 ja 5:lla ja pelaa kun sarana,
tosin 5:s versiossa sitä ei tarvi laittaa Public
tai private osaan, voi laittaa sinne missä
muutkin on. Laitoin koodin kokonaisuudessaan
mukaan...Tsekkaa ja kokeile uudestaan. Mutta
suoraan ei pidä kopioida, vaan FormCreate ja
FormClose proseduurit on luotava
Object Inspectorin /events välilehden kautta, ja
sitten vasta koodi niihin .
Siis tämä ohjelma asentaa ikonin TaskBar:iin
sinne kellon viereen, ja hiiren korvilla ikkuna
voidaan pienentään ja suurentaa.
//*********************************************
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms,Dialogs, Shellapi;

type
TForm1 = class(TForm)
procedure FormClose(Sender: TObject; var
Action: TCloseAction);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }

public
procedure IconMessage( var Msg:TMessage );
message WM_USER 100;
{ Public declarations }

end;

var
Form1: TForm1;

implementation

{$R *.DFM}
//*******************************************
procedure TForm1.FormCreate(Sender: TObject);
var
nid : TNotifyIconData;
begin
with nid do
begin
cbSize := SizeOf( TNotifyIconData );
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or
NIF_TIP;
uCallbackMessage := WM_USER 100;
hIcon := Application.Icon.Handle;
szTip := 'Klikkaa hiirellä!';
end;
Shell_NotifyIcon( NIM_ADD, @nid );
end;
//********************************************

procedure TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
var
nid : TNotifyIconData;
begin
with nid do
begin
cbSize := SizeOf( TNotifyIconData );
Wnd := Form1.Handle;
uID := 1;
end;
Shell_NotifyIcon( NIM_DELETE, @nid );
end;
//***********************************************
procedure TForm1.IconMessage( var Msg:TMessage );
begin
if Msg.lParam = WM_RBUTTONUP then begin
ShowWindow(handle,SW_MINIMIZE)
end else if Msg.lParam = WM_LBUTTONUP then
begin
ShowWindow(handle,SW_RESTORE);
end;
end;

end.

Äänestä

Joo itselläni on siis Delphi 3, eli äskeisessä
viestissä totesit rivin toimivuuden siinä, mutta
en saanut sitä silti toimimaan , niinpä jätin sen
kokonaan pois. Sen jälkeen ohjelma toimi muuten
ihan ok kuvake tuli ja muuta , mutta saisiko sitä
mitenkään muutettua siten , että se kuvake olisi
siellä siten ,että ei tarvitsisi pitää koko ajan
ohjelmaa auki tossa päätyökalupalkin kohdassa..?

Eli jos suljen ohjelman työpöydältä, niinpä
kuvake alalaidasta häviää..?

Äänestä
  • että se IconMessage proseduuri täytyy saada
    toimimaan,koska hiirellähän tätä ohjelmaa
    käsitellään.. muuten menee aika vaikeeksi.

    Esimerkiksi voit tehdä vaikka näin..
    laitat formille napin jossta ikkuna piilotetaan,
    mutta ei suljeta ja laitat Windowsin StartUp
    kansioon tämän ohjelmasi ja kun Windows
    käynnistyy niin se avautuu automaattisesti mutta
    siitä ei näy muuta kun se ikoni... Eli sun pitää
    laittaa myös käsky Form.visible:=False;--
    muistaakseni formin OnPaint proseduuriin. Ja jos
    teet Crtl/alt/del käskyn ohjelmasi näkyy
    listassa... Lisäksi siinä IconMessage
    proseduurissa on kohta ShowWindow
    (handle,SW_MINIMIZE) , sen tilalle ShowWindow
    (handle,SW_HIDE), niin tämä hävittää ikkunan
    kokonaan, paitsi sen ikonin.Lisäksi ikkunan
    oikeassa yläkulmassa olevat kolme painiketta
    pitäisi poistaa.

    Mutta tällä koko ohjelmalla ei tee mitään jos
    niitä hiirikäskyjä ei pystytä sieppaamaan. Jos
    siintä IconMessage proseduurista otetaan sisältö
    pois ja laitat sinne vain tämän käskyn..kokeeksi -
    MESSAGEBEEP(0); kun hiiri osuu ikoniin pitäisi
    kuulua merkkiääni, mutta jos ei kuulu mitään niin
    silloin viestit ei mene perille..??

    Äänestä

  • Mad_Max kirjoitti:

    että se IconMessage proseduuri täytyy saada
    toimimaan,koska hiirellähän tätä ohjelmaa
    käsitellään.. muuten menee aika vaikeeksi.

    Esimerkiksi voit tehdä vaikka näin..
    laitat formille napin jossta ikkuna piilotetaan,
    mutta ei suljeta ja laitat Windowsin StartUp
    kansioon tämän ohjelmasi ja kun Windows
    käynnistyy niin se avautuu automaattisesti mutta
    siitä ei näy muuta kun se ikoni... Eli sun pitää
    laittaa myös käsky Form.visible:=False;--
    muistaakseni formin OnPaint proseduuriin. Ja jos
    teet Crtl/alt/del käskyn ohjelmasi näkyy
    listassa... Lisäksi siinä IconMessage
    proseduurissa on kohta ShowWindow
    (handle,SW_MINIMIZE) , sen tilalle ShowWindow
    (handle,SW_HIDE), niin tämä hävittää ikkunan
    kokonaan, paitsi sen ikonin.Lisäksi ikkunan
    oikeassa yläkulmassa olevat kolme painiketta
    pitäisi poistaa.

    Mutta tällä koko ohjelmalla ei tee mitään jos
    niitä hiirikäskyjä ei pystytä sieppaamaan. Jos
    siintä IconMessage proseduurista otetaan sisältö
    pois ja laitat sinne vain tämän käskyn..kokeeksi -
    MESSAGEBEEP(0); kun hiiri osuu ikoniin pitäisi
    kuulua merkkiääni, mutta jos ei kuulu mitään niin
    silloin viestit ei mene perille..??

    No koitan vaikka noin...

    Äänestä

Kommentoi aloitusta


Näinkötarkoitit! kirjoitti:

Eli tos jonkun aikaa sitten olit vastannut
sellaiseen lähettämääni viestiin , jossa kyse oli
oman ikonin lisääminen windowsin työkalupalkkiin
delphissä. Niimpä en saanut koodiasi toimimaa
oikein kunnolla kohdassa:

// PUBLIC osaan laitat sitten näin..
procedure IconMessage( var Msg : TMessage );
message WM_USER
100;

Eli delphissä public osahan näyttää alussa tältä:

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

Eli siinähän se on, niin minä lisäsin koodisi
siihen seuraavalla tavalla :

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
------------------------------------------------
procedure IconMessage( var Msg : TMessage );
message WM_USER
100;
------------------------------------------------
{ Public declarations }
end;

eli vaikka tolleen, miten se pitäisi lisätä ?
kyllä lisäsin sen vielä muutmalla eri tavalla ,
mutta ei mahtanut lähteä toimimaan..?

Eli tarkoititko tota lisäystä seuraavalla
esimerkillä minkä annoin ?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu