/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Lidt hjælp
Fra : Henning Madsen


Dato : 22-02-08 22:58

I en Ini fil skal der gemmes max 1000 emner som har 6 varianter hver.
Spørgsmålet er om det tidsmæssigt kan betale sig at lægge
data i en Array eller bare køre det på Ini filen alene.
Bruger man Array skal data, når programmet afsluttes,
overføres til Ini filen og igen når programmet startes
overføres fra Ini filen til Array,lidt svært at holde rede på. ??
Men kan jo være nødvendigt hvis programmet bliver
væsentligt langsom ved kun at køre det over Ini filen.

Et problem mere. Jeg lukker programmet via en menu,
godt nok men programmet kan jo også lukkes med krydset øverst til højre.
Skal formentlig gøres ved en eller anden måde at undertrykke krydset
men hvordan ??

Og så lige det sidste ??
Hvornår læses Formen når man bruger
onCreate
onShow
onPaint
Det var en større mundfuld håber der er en der kan rede trådene ud.
M.V.H.
Henning




 
 
Harald (23-02-2008)
Kommentar
Fra : Harald


Dato : 23-02-08 00:21

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:47bf45a5$0$15876$edfadb0f@dtext01.news.tele.dk...
>I en Ini fil skal der gemmes max 1000 emner som har 6 varianter hver.
> Spørgsmålet er om det tidsmæssigt kan betale sig at lægge
> data i en Array eller bare køre det på Ini filen alene.
> Bruger man Array skal data, når programmet afsluttes,
> overføres til Ini filen og igen når programmet startes
> overføres fra Ini filen til Array,lidt svært at holde rede på. ??
> Men kan jo være nødvendigt hvis programmet bliver
> væsentligt langsom ved kun at køre det over Ini filen.

Der er vist en begrænsning på hvor stor en ini fil kan væer men jeg tror den
er over 6000 linier.
Med mindre det skal gå meget meget hurtig så ville jeg vælge at kører
direkte fra ini filen, ved alm. drift tror jeg ikke du kan mærke forskel.

>
> Et problem mere. Jeg lukker programmet via en menu,
> godt nok men programmet kan jo også lukkes med krydset øverst til højre.
> Skal formentlig gøres ved en eller anden måde at undertrykke krydset
> men hvordan ??

Hvofor er det et problem? Hvis der skal køres noget kode når programmet
lukkes så kik på OnCloseQuery eller er det OnQueryClose.

>
> Og så lige det sidste ??
> Hvornår læses Formen når man bruger
> onCreate
> onShow
> onPaint

Hvad med at prøve det, brug debuggeren.

/HK



Henning Madsen (23-02-2008)
Kommentar
Fra : Henning Madsen


Dato : 23-02-08 13:12


"Harald" <noname@nomail.dk> skrev i en meddelelse
news:47bf58eb$0$90264$14726298@news.sunsite.dk...
> "Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
> news:47bf45a5$0$15876$edfadb0f@dtext01.news.tele.dk...
>
>>
>> Et problem mere. Jeg lukker programmet via en menu,
>> godt nok men programmet kan jo også lukkes med krydset øverst til højre.
>> Skal formentlig gøres ved en eller anden måde at undertrykke krydset
>> men hvordan ??
>
> Hvofor er det et problem? Hvis der skal køres noget kode når programmet
> lukkes så kik på OnCloseQuery eller er det OnQueryClose.
>
>>
>> Og så lige det sidste ??
>> Hvornår læses Formen når man bruger
>> onCreate
>> onShow
>> onPaint
>
> Hvad med at prøve det, brug debuggeren.
>
> /HK
> Tak for svaret Harald
Har prøvet både med onCloseQuery og onQueryClose i
lukke memuen i stedet for kun Close, men får kompiler fejl.
Har jeg misforstået noget eller hvad ??
Angående onCrete, onShow og onPaint har jeg aldrig
fået lært at bruge debuggeren så derfor spørsmålet.
M.V.H.
Henning
>



Harald (23-02-2008)
Kommentar
Fra : Harald


Dato : 23-02-08 13:38

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:47c00ddc$0$15899$edfadb0f@dtext01.news.tele.dk...
>
> "Harald" <noname@nomail.dk> skrev i en meddelelse
> news:47bf58eb$0$90264$14726298@news.sunsite.dk...
>> "Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
>> news:47bf45a5$0$15876$edfadb0f@dtext01.news.tele.dk...
>>
>>>
>>> Et problem mere. Jeg lukker programmet via en menu,
>>> godt nok men programmet kan jo også lukkes med krydset øverst til højre.
>>> Skal formentlig gøres ved en eller anden måde at undertrykke krydset
>>> men hvordan ??
>>
>> Hvofor er det et problem? Hvis der skal køres noget kode når programmet
>> lukkes så kik på OnCloseQuery eller er det OnQueryClose.
>>
>>>
>>> Og så lige det sidste ??
>>> Hvornår læses Formen når man bruger
>>> onCreate
>>> onShow
>>> onPaint
>>
>> Hvad med at prøve det, brug debuggeren.
>>
>> /HK
>> Tak for svaret Harald
> Har prøvet både med onCloseQuery og onQueryClose i
> lukke memuen i stedet for kun Close, men får kompiler fejl.
> Har jeg misforstået noget eller hvad ??
> Angående onCrete, onShow og onPaint har jeg aldrig
> fået lært at bruge debuggeren så derfor spørsmålet.

Jeg bruger Delphi 7 og her virker det således:

OnCloseQuery er en event som du finder i Object Inspectoren under Events,
OnCloseQuery kaldes inden formen lukkes og du kan evt. sætte CanClose til
false hvis du ikke vil have at formen skal lukkes. Men det er jo det samme
som med OnCreate OnShow osv. som jeg går ud fra at du kender da du nævner
dem.

Hvis du f.eks. skriver noget kode i en event og derefter klikker til venstre
for edit vinduet så vil linien blive rød og debuggeren vil så stoppe program
afviklingen lige der og på den måde kan du se hvilke events der kommer
hvornår.

/HK





Henning Madsen (23-02-2008)
Kommentar
Fra : Henning Madsen


Dato : 23-02-08 15:21


"Harald" <noname@nomail.dk> skrev i en meddelelse
news:47c01396$0$90270$14726298@news.sunsite.dk...
> "Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
> news:47c00ddc$0$15899$edfadb0f@dtext01.news.tele.dk...
>>
>> "Harald" <noname@nomail.dk> skrev i en meddelelse
>> news:47bf58eb$0$90264$14726298@news.sunsite.dk...
>>> "Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
>>> news:47bf45a5$0$15876$edfadb0f@dtext01.news.tele.dk...
>>>
>>>>
>>>
>>> /HK
>>> Tak for svaret Harald
>> Har prøvet både med onCloseQuery og onQueryClose i
>> lukke memuen i stedet for kun Close, men får kompiler fejl.
>> Har jeg misforstået noget eller hvad ??
>> Angående onCrete, onShow og onPaint har jeg aldrig
>> fået lært at bruge debuggeren så derfor spørsmålet.
>
> Jeg bruger Delphi 7 og her virker det således:
>
> OnCloseQuery er en event som du finder i Object Inspectoren under Events,
> OnCloseQuery kaldes inden formen lukkes og du kan evt. sætte CanClose til
> false hvis du ikke vil have at formen skal lukkes. Men det er jo det samme
> som med OnCreate OnShow osv. som jeg går ud fra at du kender da du nævner
> dem.
>
> Hvis du f.eks. skriver noget kode i en event og derefter klikker til
> venstre for edit vinduet så vil linien blive rød og debuggeren vil så
> stoppe program afviklingen lige der og på den måde kan du se hvilke events
> der kommer hvornår.
>
> /HK
Hej Harald jeg burde fuldtids ansætte dig ?
Min Object Inspector ser således ud

Luk1
Properties Event
Action
OnAdvancedDrawItem
OnClick Luk1Click
OnDrawItem
OnMeasureItem
SubMenuImages

Jeg bruger også Delphi 7

M.V.H.
Henning


>
>
>



Harald (23-02-2008)
Kommentar
Fra : Harald


Dato : 23-02-08 16:13

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:47c02c08$0$15890$edfadb0f@dtext01.news.tele.dk...
>>>>
>>>> /HK
>>>> Tak for svaret Harald
>>> Har prøvet både med onCloseQuery og onQueryClose i
>>> lukke memuen i stedet for kun Close, men får kompiler fejl.
>>> Har jeg misforstået noget eller hvad ??
>>> Angående onCrete, onShow og onPaint har jeg aldrig
>>> fået lært at bruge debuggeren så derfor spørsmålet.
>>
>> Jeg bruger Delphi 7 og her virker det således:
>>
>> OnCloseQuery er en event som du finder i Object Inspectoren under Events,
>> OnCloseQuery kaldes inden formen lukkes og du kan evt. sætte CanClose til
>> false hvis du ikke vil have at formen skal lukkes. Men det er jo det
>> samme som med OnCreate OnShow osv. som jeg går ud fra at du kender da du
>> nævner dem.
>>
>> Hvis du f.eks. skriver noget kode i en event og derefter klikker til
>> venstre for edit vinduet så vil linien blive rød og debuggeren vil så
>> stoppe program afviklingen lige der og på den måde kan du se hvilke
>> events der kommer hvornår.
>>
>> /HK
> Hej Harald jeg burde fuldtids ansætte dig ?
> Min Object Inspector ser således ud
>
> Luk1
> Properties Event
> Action
> OnAdvancedDrawItem
> OnClick Luk1Click
> OnDrawItem
> OnMeasureItem
> SubMenuImages

Øverst i Inspectoren kan du vælge hvilket object du vil se Properties og
Events for eller du kan klikke på det ønskede object.
Det du beskriver her er vist ikke Properties og Events for din Form.

/HK



Thomas Eg Jørgensen (25-02-2008)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 25-02-08 09:15

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:47c00ddc$0$15899$edfadb0f@dtext01.news.tele.dk...
>>> Et problem mere. Jeg lukker programmet via en menu,
>>> godt nok men programmet kan jo også lukkes med krydset øverst til
>>> højre.
>>> Skal formentlig gøres ved en eller anden måde at undertrykke krydset
>>> men hvordan ??
>>
>> Hvofor er det et problem? Hvis der skal køres noget kode når
>> programmet lukkes så kik på OnCloseQuery eller er det OnQueryClose.
>
> Har prøvet både med onCloseQuery og onQueryClose i
> lukke memuen i stedet for kun Close, men får kompiler fejl.
> Har jeg misforstået noget eller hvad ??
> Angående onCrete, onShow og onPaint har jeg aldrig
> fået lært at bruge debuggeren så derfor spørsmålet.
>

Jeg tror du misforstår lidt...

Når du kalder form1.close så bliver din forms' "OnCloseQuery" kaldt og
her kan du så give "tilladelse" til at formen kan lukke...

Eksempel:

I din form's OnCloseQuery kan du prøve at skrive følgende kode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
case MessageDlg('Er du sikker på du vil
lukke?',mtconfirmation,[mbyes,mbno],0) of
mryes: CanClose:=true;
mrno: canclose:=false;
end;
end;


Og din "lukke menu" skal du blot bruge "Close" som jeg tror at du
tidligere har gjort, eksempelvis med en knap:
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

Prøv at køre dette...

OnClose-eventen gør lidt det samme som OnCloseQuery, men her "er det
bare for sent", dvs der er form'en ved at lukke(det er f.eks. et godt
sted at afslutte ting man har startet i OnShow)...

Håber det hjælper dig lidt på vej...

MVH
Thomas


Henning Madsen (25-02-2008)
Kommentar
Fra : Henning Madsen


Dato : 25-02-08 16:50


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> skrev i en meddelelse
news:47c278f4$0$90265$14726298@news.sunsite.dk...
> "Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
> news:47c00ddc$0$15899$edfadb0f@dtext01.news.tele.dk...
>>
>
> Jeg tror du misforstår lidt...
>
> Når du kalder form1.close så bliver din forms' "OnCloseQuery" kaldt og her
> kan du så give "tilladelse" til at formen kan lukke...
>
> Eksempel:
>
> I din form's OnCloseQuery kan du prøve at skrive følgende kode:
> procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
> begin
> case MessageDlg('Er du sikker på du vil
> lukke?',mtconfirmation,[mbyes,mbno],0) of
> mryes: CanClose:=true;
> mrno: canclose:=false;
> end;
> end;
>
>
> Og din "lukke menu" skal du blot bruge "Close" som jeg tror at du
> tidligere har gjort, eksempelvis med en knap:
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> Close;
> end;
>
> Prøv at køre dette...
>
> OnClose-eventen gør lidt det samme som OnCloseQuery, men her "er det bare
> for sent", dvs der er form'en ved at lukke(det er f.eks. et godt sted at
> afslutte ting man har startet i OnShow)...
>
> Håber det hjælper dig lidt på vej...
>
> MVH
> Thomas
Det må man sige så er problemet løst.
Jeg har et problem mere (Når man rækker fanden en lillefinger osv.)
Men aligevel
//==============================================================================
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Antal : Integer;
Haven : TIniFile;
begin
Navn := Listbox1.Items[5];
Haven := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\'+'Haven'+'.INI');
Antal := Haven.ReadInteger('Plads','Antal',0);
Antal := Antal + 1;
XX := X;
YY := Y;
GemCirkelData(Antal,XX,YY,Farve,Diameter,Navn); //---------->
TegnCirkel(XX,YY,Farve,Diameter,Navn); //---------->
Haven.Free;
end;
//=============================================================================

Den viste Procedure virker ok men
Min Listboxen som er anbragt på formen indeholder ca 700 navne,
Ved kørsel vel jeg gerne have at Proceduren på en eller anden måde
stopper og giver mig muglighed for at markerer det navn jeg skal bruge
og kører videre med det. Er det mugligt??
M.V.H.
Henning
>



Thomas Eg Jørgensen (26-02-2008)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 26-02-08 10:31

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:47c2e3c6$0$15878$edfadb0f@dtext01.news.tele.dk...
> Jeg har et problem mere (Når man rækker fanden en lillefinger osv.)
> Men aligevel
> //==============================================================================
> procedure TForm1.Image1MouseDown(Sender: TObject; Button:
> TMouseButton;
> Shift: TShiftState; X, Y: Integer);
> var
> Antal : Integer;
> Haven : TIniFile;
> begin
> Navn := Listbox1.Items[5];
> Haven :=
> TIniFile.Create(ExtractFilePath(ParamStr(0))+'\'+'Haven'+'.INI');
> Antal := Haven.ReadInteger('Plads','Antal',0);
> Antal := Antal + 1;
> XX := X;
> YY := Y;
> GemCirkelData(Antal,XX,YY,Farve,Diameter,Navn); //---------->
> TegnCirkel(XX,YY,Farve,Diameter,Navn); //---------->
> Haven.Free;
> end;
> //=============================================================================
>
> Den viste Procedure virker ok men
> Min Listboxen som er anbragt på formen indeholder ca 700 navne,
> Ved kørsel vel jeg gerne have at Proceduren på en eller anden måde
> stopper og giver mig muglighed for at markerer det navn jeg skal bruge
> og kører videre med det. Er det mugligt??
>

Mjea, det kan du vel godt:
//Kode her som kører før valget
While MyListBox.selected=nil do
begin
Application.processmessages;
end;
//kode som skal køres efter...

MEN, det er en MEGET dårlig løsning! (Så dårlig at jeg overvejede om jeg
overhovedet skulle skrive det)

Kan brugeren ikke lave disse valg FØR din Image1MouseDown-event? Altså
vælge i listen inden de klikker på billedet? Dette ville være en bedre
løsning(og sikkert også mere intuitiv for brugeren)...

Så kan du lave din Image1MouseDown om til noget al'a:
//==============================================================================
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Antal : Integer;
Haven : TIniFile;
begin
if MyListBox.selected = nil then
begin
messagedlg('Du skal vælge i listen først!',mtwarning,[mbok],0);
end
else
begin
Navn := Listbox1.Items[5];
Haven :=
TIniFile.Create(ExtractFilePath(ParamStr(0))+'\'+'Haven'+'.INI');
Antal := Haven.ReadInteger('Plads','Antal',0);
Antal := Antal + 1;
XX := X;
YY := Y;
GemCirkelData(Antal,XX,YY,Farve,Diameter,Navn); //---------->
TegnCirkel(XX,YY,Farve,Diameter,Navn); //---------->
Haven.Free;
end;
end;
//=============================================================================

MVH
Thomas


Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste