Avatar billede decko Nybegynder
29. oktober 2003 - 07:43 Der er 10 kommentarer og
1 løsning

Genvejs launcher

Jeg er ved at være træt af at finde en genvej der er i en mappe som er i en anden mappe osv. Jeg tænkte på at lave en genvejs launcher, men ved ikke hvordan man nemmest gør det. Det skal være noget men en listbox!
Nogen der kan hjælpe?
Avatar billede janbb Juniormester
29. oktober 2003 - 17:46 #1
Genveje ?.Er jo tit HTM-filer eller txt og her kan det være smart med en 'connection' til sin twebbrowser og en file dialog box.Skal den mere generelt selv kunne finde ud af hvad filassociationen er på den aktuelle computer er det smartere (synes jeg) at åbne via en database.Har set programmer hvor man selv lægger sine 'links' ind stkvis i en listbox, men synes personligt det er for besværligt - hvis man derimod kunne få listboxen aut. til at bygge sig op efter filerni i et givet bib. ville jeg synes det var ret smart, men det har jeg desværre ikke set og er ikke selv så stiv i listboxe at jeg tror det nytter noget at kasre sig ud i at prøve at konstruere et eksempel, men er du interesseret i kode til de andre to 'modeller' har jeg et par eksempler liggende.
Avatar billede decko Nybegynder
29. oktober 2003 - 18:13 #2
Jeg vil meget gerne se 1 eks eller 2!
Avatar billede janbb Juniormester
30. oktober 2003 - 05:23 #3
Første EKS er kun til 'lokale' filer og åbner ikke exe-filer (kommer bare noget 'sludder' i browser hvis man forsøger.

unit Unit7yyold;



interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtrls, StdCtrls, FileCtrl, SHDocVw;

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    WebBrowser1: TWebBrowser;
    FileListBox1: TFileListBox;
    DirectoryListBox1: TDirectoryListBox;
    procedure Button1Click(Sender: TObject);
    procedure FileListBox1Change(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
begin

If opendialog1.execute then
begin
Form1.caption:=opendialog1.filename;
  WebBrowser1.Navigate(opendialog1.filename);
end;
end;

procedure TForm1.FileListBox1Change(Sender: TObject);
begin
WebBrowser1.Navigate(filelistbox1.filename);
end;

end.


NEDENFOR:
her 'addressen' så lagt ind i data basens memofelt, men det kan sagtens være et dbEditfelt i stedet for - skal bare kunne rumme hele adresse - kan osse bruges til exe-filer

eller internetlinks - sidst nævnte kan pastes til memoen

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, DBTables, ExtCtrls, DBCtrls, Mask, ComCtrls, Grids, DBGrids,ShellApi;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBMemo1: TDBMemo;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    Table1: TTable;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label5: TLabel;
    Edit1: TEdit;
    Button4: TButton;
    Label6: TLabel;
    Button5: TButton;
    Button6: TButton;
   
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
DBEdit1.ReadOnly:=True;
DBEdit1.Color:=clSilver;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Table1.SetRangeStart;
Table1.FindKey([Edit1.Text]);
Table1.SetKey;
Table1.Fields[0].AsString :=Edit1.Text;
Table1.GoToNearest;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
DBMemo1.CopyToClipboard;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

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;


procedure TForm1.Button6Click(Sender: TObject);
begin
DBMemo1.pasteFromClipboard;
end;

end.
Avatar billede janbb Juniormester
30. oktober 2003 - 08:03 #4
Har man mange genveje i sin database kan det efterhånden blive lisså besværligt som at 'rode rundt' efter dem - men .. så er det at man kan gruppere sine genveje i nogen 'typer' og så kalde det 'udvalg' man ønsker frem med en SQL-sætning.Det gør det til at have med at gøre igen - når 'samlingen' bliver for stor.Man kan lægge nogen forudindtastede SQL-sætninger ind i en combobox og kalde den type af udvalg man ønsker frem uden at skulle taste for mange ting ind hver gang.
Avatar billede janbb Juniormester
30. oktober 2003 - 08:27 #5
Det er nogenlunde så let som nedenstående linier antyder:
Query1.SQL.Text:=Edit2.Text;
  //Query1.SQL.Text:=Combobox1.Text;
Query1.Open;
Avatar billede janbb Juniormester
30. oktober 2003 - 09:27 #6
Er genvejene filer der kan exekveres i en webbrowser ? - kan du paste dem til et dbeditfelt og bruge feltet til at navigere webbrowseren:

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
WebBrowser1.Navigate(dbedit5.Text);
end;

,-)
Avatar billede janbb Juniormester
30. oktober 2003 - 11:18 #7
hvis du vil putte genvejene ind i programmet uden mulighed for modificering efter compilering kan man bruge en listview:
unit Unitx1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ImgList, OleCtrls, SHDocVw,shellapi;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

  Shellexecute(handle,'open',PChar(listview1.Selected.Caption),nil,nil,sw_show);
  //memo1.Lines.LoadFromFile(listview1.Selected.Caption );
end;


end.
Avatar billede janbb Juniormester
30. oktober 2003 - 11:19 #8
læg mærke til shellapi i 'uses', der skal være med for at man kan bruge shellexecute.
Avatar billede janbb Juniormester
07. november 2003 - 09:49 #9
Har lige fundet en smart metode til exe-fil genveje hvis du er interesseret ?
Avatar billede decko Nybegynder
07. november 2003 - 14:25 #10
Vil da gerne se på det!
Avatar billede janbb Juniormester
07. november 2003 - 21:20 #11
Har brugt nogen af de tips jeg har fået her på E, det er ikke fordi jeg selv vil tage 'æren', der er nogen indstillinger selvf. - du skal sætte filelistbox onclick- event i obj insop til de resp procedurer.

unit Unit7yyextra;



interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtrls, StdCtrls, FileCtrl, SHDocVw;

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    WebBrowser1: TWebBrowser;
    FileListBox1: TFileListBox;
    DirectoryListBox1: TDirectoryListBox;
    FileListBox2: TFileListBox;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FileListBox1Change(Sender: TObject);
    procedure FileListBox2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
begin

If opendialog1.execute then
begin
Form1.caption:=opendialog1.filename;
  WebBrowser1.Navigate(opendialog1.filename);
end;
end;

procedure TForm1.FileListBox2Change(Sender: TObject);
begin
WebBrowser1.Navigate(filelistbox2.filename);
end;
procedure TForm1.FileListBox1Change(Sender: TObject);



  Var
  Run :Array of Char;
  strRun : String;
  I : Integer;
   
Begin
  //i min kode indlæses det fra en fil, men samme princip.
  Form1.Edit1.Text:=Filelistbox1.filename;
  strRun := form1.Edit1.Text;
  setLength(Run,Length(strRun));

  For I := 0 to (Length(strRun)-1) do
  Begin
    Run[I] := strRun[I+1];
  End;
  WinExec(PChar(strRun),SW_SHOWNORMAL);
  //WinExec(Run,SW_SHOWNORMAL); ikke god
End;
  //ShellExecute (handle,'open',PChar(listbox1.items[ListBox1.ItemIndex]),nil,nil,SW_NORMAL);
//WebBrowser1.Navigate(listbox1.items[ListBox1.ItemIndex]);



    end.



og så skal du sætte 'mask' så filelistbox 1 kun tager exefiler ind og filelistbox 2 kun tager filer ind der kan vises i en browser: htm jpg osv
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