Announcement

Collapse
No announcement yet.

Ohne VCL...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ohne VCL...

    Hallo,
    hat jemand ein kleines Beispiel für mich, wie man ohne VCL eine kleine Anwendung schreibt die eine Datei in einen Pfad der vorher auszuwählen ist speichert? Also hauptsächlich geht es mir um die Auswahl des Pfades in einem Programm ohne VCL. Die Anwendung soll eine sehr kleine Exe haben.

    Gruß

    Michael

  • #2
    Hallo,<p>

    schau Dir doch mal die Key Objects Library unter
    <a href="http://xcl.cjb.net">http://xcl.cjb.net</a> an. Das ist das Beste für Programmierung in Delphi ohne VCL was ich bisher fand.
    Die API-Funktion shBrowseForFolder zeigt den Suchdialog für Verzeichnisse an

    Comment


    • #3
      Moin Michael,<br>
      <br>
      vielleicht hilft Dir auch diese Seite hier weiter:<br>
      http://www.luckie.de.vu/<br>
      Dort gibt es unter Delphi (Menü links) auch nonVCL Tutorials.<br>
      <br>
      Ciao<br>
      Chri

      Comment


      • #4
        Hallo,

        @Bruno:<br>
        URL scheint "defekt" zu sein (http://bonanzas.rinet.ru/).

        Wie kann man auf OnClick-Events ohne VCL reagieren? Man könnte ja einfach
        <pre>
        procedure TForm1.MyClick(Sender: TObject);
        begin
        //...
        end;
        </pre>
        definieren, aber da ich nun keine Form habe wird das schwierig:

        <pre>
        WM_SHELLNOTIFY:
        case LParam of
        WM_RBUTTONDOWN,
        begin
        GetCursorPos (Point);
        try
        NewItem:= TMenuItem.Create(nil);
        NewItem.Caption:= 'Beenden';
        NewItem.OnClick:= MyClick (nil);

        PMenu:= TPopUpmenu.Create(nil);
        with PMenu do
        begin
        Items.Add(NewItem);
        end;
        PMenu.popup(point.x,point.y);

        finally
        PMenu.Free;
        end;
        end;
        </pre>

        Tschüss Ti

        Comment


        • #5
          Hallo Leute,
          danke erstmal für die Tips, werd mich die nächsten Tage mal damit beschäftigen...

          Bis denne

          Michae

          Comment


          • #6
            <pre><p><b>uses</b>
            ShlObj, ActiveX;
            <p>
            <b>function</b> BffCallBack(Wnd: HWND; Msg: UINT; IDList: PItemIDList; Select: PChar): Integer; <b>stdcall</b>;
            <b>var</b>
            Filename: <b>array</b> [0..MAX_PATH] <b>of</b> Char;
            Valid: Boolean;
            <b>begin</b>
            Result := 0;
            <b>case</b> Msg <b>of</b>
            BFFM_INITIALIZED:
            <b>if</b> (Select <> <b>nil</b>) <b>then</b>
            SendMessage(Wnd, BFFM_SETSELECTION, Ord(True), LPARAM(Select));
            BFFM_SELCHANGED:
            <b>if</b> (IDList <> <b>nil</b>) <b>then</b>
            <b>begin</b>
            Valid := SHGetPathFromIDList(IDList, Filename);
            SendMessage(Wnd, BFFM_ENABLEOK, 0, LPARAM(Valid));
            <b>if</b> (Valid) <b>then</b>
            SendMessage(Wnd, BFFM_SETSTATUSTEXT, 0, LPARAM(@Filename[0]))
            <b>else</b>
            SendMessage(Wnd, BFFM_SETSTATUSTEXT, 0, LPARAM(PChar('')));
            <b>end</b>;
            <b>end</b>;
            <b>end</b>;
            <p>
            <b>function</b> SelectDirectory(Wnd: HWND; Path, Title, Select: PChar): Boolean;
            <b>var</b>
            Browse: TBrowseInfo;
            IDList: PItemIDList;
            Malloc: IMalloc;
            <b>begin</b>
            Result := False;
            FillChar(Browse, SizeOf(Browse), 0);
            Browse.hwndOwner := Wnd;
            Browse.lpszTitle := Title;
            Browse.lpfn := @BffCallBack;
            Browse.ulFlags := BIF_RETURNONLYFSDIRS <b>or</b> BIF_STATUSTEXT;
            Browse.lParam := LPARAM(Select);
            IDList := SHBrowseForFolder(Browse);
            <b>if</b> (IDList <> <b>nil</b>) <b>then</b>
            <b>begin</b>
            Path[0] := #0;
            Result := SHGetPathFromIDList(IDList, Path);
            SHGetMalloc(Malloc);
            Malloc.Free(IDList);
            <b>end</b>;
            <b>end</b>;
            <p>
            <i>////////////////////////////////////////////////////////////////////////////////</i>
            <p>
            <b>procedure</b> TForm1.Button1Click(Sender: TObject);
            <b>var</b>
            Path: <b>array</b> [0..MAX_PATH] <b>of</b> Char;
            <b>begin</b>
            <b>if</b> (SelectDirectory(Handle, Path, 'Test', 'C:\Temp')) <b>then</b>
            MessageBox(Handle, Path, 'Test', MB_ICONINFORMATION);
            <b>end</b>;<p></pre>

            - nic

            Comment

            Working...
            X