Avatar billede janbb Juniormester
01. februar 2001 - 13:21 Der er 4 kommentarer og
2 løsninger

Shellexecute fra memofelt i database


Hvis jeg fra et \"knapklik\" udfører nedenstående:
Shellexecute(handle,\'open\',\'C:\\DC1\\node-1.gif\',nil,nil,sw_show);
  får jeg en åbning af en ønsket fil.
Jeg har lavet en database, hvor jeg i et memofelt ønsker at have nogle filhenvisninger.Jeg vil nu gerne - stedet for at trykke på en specik knap for hver filhenvisning kunne kopiere filhenvisningen fra memo-feltet til shellexecuteordren og åbne en hvilken som helst af filhenvisningerne i de forskellige memofelter ved hjælp af nogle få knaptryk.
Kan ikke selv helt gennemskue hvordan det skal skrues sammen der er mulighed for Memo1.Lines... og osse nogle nogle copy/past.to/from.clipboard fra memofeltet, men hvordan man får det ind i shellexecuteordren må jeg hjælpes med. Eer begynder m.h.t. Delfi endnu.Vil derfor helst have lidt udførlige forklaringer fremfor de forblommede hentydninger der bruges mellem de mere rutinerede programmører.
Avatar billede martinlind Nybegynder
01. februar 2001 - 13:28 #1
Du bruger din idé om Memo.Lines

for Cnt := 0 to Memo.Lines.Count-1 do
begin
Shellexecute(handle,\'open\',Memo.Lines[Cnt],nil,nil,sw_show); 
  // Memo.Lines[Cnt] - indeholder én filhenvisning
end;

Noget i den retning, dette eks. åbner alle henvisninger, så du skal nok in og finde udaf hvor du har kliket med musen, det er noget med mousedown og så en x/y pos som kan laves om til en line pos med en funk. der hedder MouseToCell(x,y)

Prøv at leg lidt med dette.

/Martin
Avatar billede nazaq Nybegynder
01. februar 2001 - 13:29 #2
Hvis du har et memo felt på din form som indeholder linierne fra memofeltet i databasen kan du bruge denne:

procedure ExeMemoLine(linienr);
begin
  Shellexecute(handle,\'open\',PChar(memo1.lines[linienr]),nil,nil,sw_show);
end;
Avatar billede janbb Juniormester
01. februar 2001 - 14:27 #3
sådan endte det med:



procedure TForm1.Button5Click(Sender: TObject);
var
cnt: integer;
begin
for Cnt := 0 to DBMemo1.Lines.Count-1 do
begin
Shellexecute(handle,\'open\',PChar(DBMemo1.Lines[Cnt]),nil,nil,sw_show);
  // Memo.Lines[Cnt] - indeholder én filhenvisning
  // Shellexecute(handle,\'open\',PChar(memo1.lines[1]),nil,nil,sw_show);


end;
end;



Det er bare så lækkert tusind tak
Avatar billede madshenrik Nybegynder
04. februar 2001 - 10:15 #4
Janbb hvis du ønsker at det skal virke via click med musen findes der en richedit98 component som vil kunne hjælpe dig til at lave det på en meget nem måde.

Mads
Avatar billede janbb Juniormester
04. februar 2001 - 14:33 #5
Jeg er simpelthen bare så tilfreds med såden som det virker.Hvis jeg skulle beklage mig over noget er det at den ene linie jeg får ind med ovenstående kode bevirker at hvis filhenvisningen overstiger 1 linie får jeg den ikke ind - men det er jo sjældent, men forekommer desværre ind imellem.
Avatar billede madshenrik Nybegynder
04. februar 2001 - 17:01 #6
OK fint nok.

Mads
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