AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

NM_RETURN - Problem

Ein Thema von silentAMD · begonnen am 20. Mai 2004 · letzter Beitrag vom 18. Mai 2007
Antwort Antwort
Seite 2 von 4     12 34   
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: NM_RETURN - Problem

  Alt 24. Mai 2004, 22:29
@MathiasSimmack: VIELEN VIELEN DANK
Dass du dir so viel Arbeit machst: RESPEKT!!!!
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: NM_RETURN - Problem

  Alt 24. Mai 2004, 22:33
ach ja noch was: jetzt wo es mit resourcen tabu ist, wie bekommt man die buttons so hin, wie von einer resource??? die "normal" erstellten funktionieren nämlich nicht so recht (DEFPUSHBUTTON kann man mit enter betätigen, da er den focus hat) und sehen besch****n aus
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#13

Re: NM_RETURN - Problem

  Alt 24. Mai 2004, 22:33
Mal seh´n ob du noch jubelst, wenn meine Rechnung bei dir eintrifft.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#14

Re: NM_RETURN - Problem

  Alt 24. Mai 2004, 22:36
Zitat von silentAMD:
ach ja noch was: jetzt wo es mit resourcen tabu ist, wie bekommt man die buttons so hin, wie von einer resource??? die "normal" erstellten funktionieren nämlich nicht so recht (DEFPUSHBUTTON kann man mit enter betätigen, da er den focus hat) und sehen besch****n aus
Wo kommt denn da ein Button vor? Bzw. wo soll denn einer hin?
Wenn du ein Options- o.ä. Fenster benötigst, dann spricht nichts dagegen, das als Ressource zu gestalten. So mache ich´s ja auch. Ich programmiere das Hauptfenster bzw. die Controls (List-View, Tree-View, was auch immer) per API. Wenn ich dann aber einen Eintrag anklicke, dann erscheint ein Dialog. Und das ist ´ne Ressource. Nimm als Beispiel die Registry-Demo aus den Tutorials.
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: NM_RETURN - Problem

  Alt 24. Mai 2004, 22:40
Zitat:
Wo kommt denn da ein Button vor? Bzw. wo soll denn einer hin?
naja, wenn du mein prog kennst (ArchivROM-Viewer in VCL), wirst du sicherlich die suchfunktion bemerkt haben. da ist ja ein button. und jetzt versuche ich alles auf API umzuschreiben


Zitat:
Oder war das der Versuch, meinen und Luckies Code so unkenntlich wie möglich zu machen, damit man nicht merkt woher du ihn hast?
... naja, mit etwas hilfe der Win32-API-Tutorials, die sehr gelungen sind!!!
und ich persönlich habe programmieren mit vcl meistens durch code-beispiele und weniger durch theorie (verstehen) gelernt. wenn man den code dann bearbeiten möchte, lernt man anhand von fehlern super dazu! (ein buch hätte mich nicht auf denkfehler hinweisen können )
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#16

Re: NM_RETURN - Problem

  Alt 25. Mai 2004, 08:56
Zitat von silentAMD:
naja, wenn du mein prog kennst (ArchivROM-Viewer in VCL), wirst du sicherlich die suchfunktion bemerkt haben.
Ach so ... ... nee, kenne ich nicht.

Zitat:
und ich persönlich habe programmieren mit vcl meistens durch code-beispiele und weniger durch theorie (verstehen) gelernt.
Ja, das stimmt schon ... Und ich kann mich bspw. an Beiträge wie "Die 1024 Bytes des Monats erinnern". Das war in der alten DOS International (PC MAGAZIN). Da haben Programmierer ihre Programme "vergewaltigt" und alles in eine Zeile gequetscht, nur beim Quellcode unter den geforderten 1024 Bytes zu bleiben. Okay, das war witzig, aber kein Mensch hat durchgesehen. Darum habe ich dann irgendwann begonnen, den Code wieder lesbarer zu gestalten. Wobei ich aber zugeben muss, dass sich mein Stil im Laufe der Zeit auch mehrfach verändert hat.

Aber trotzdem habe ich mich immer bemüht, eine halbwegs lesbare Form beizubehalten. Als Beispiel, was mir auch in ein paar älteren Quellcodes von -pieps- (Name zensiert! ) aufgefallen ist -

Ich deklariere Konstanten und Variablen usw. immer nur erst ab dem Zeitpunkt, ab dem ich sie brauche. Sprich:
Delphi-Quellcode:
const
  IDC_LISTVIEW = 1;
  IDC_BUTTON = 2;
var
  hLV,
  hButton : HWND;

function wndproc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT;
  stdcall;
{ ... }
Benötige ich dann eine der Variablen doch mal vorher, dann übergebe ich sie meist per Konstante an die Funktion/Prozedur. Bei den o.g. Beispielkonstanten allerdings lasse ich mit mir reden und verschiebe sie auch mal weiter nach vorn, weil sich ihre Werte ja im Programm nicht ändern können.

Auf die Weise wundere ich mich nie, wenn irgendwas schief geht, weil sich an einer mir entfallenen Stelle im Quellcode vielleicht doch mal der Inhalt einer (globalen) Variable ändert. Weil: Das kann dann nicht passieren.

usw.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#17

Re: NM_RETURN - Problem

  Alt 31. Aug 2004, 21:51
@silentAMD:
Nochmal (hatten wir schon in einem anderen ähnlichen Thread) - wie ist der Stil des Dialogs. Ach und noch was. Kannst du bitte die fragliche Ressource posten (in code-Tags). Danke!

@Mathias:
Zitat von MathiasSimmack:
Ich deklariere Konstanten und Variablen usw. immer nur erst ab dem Zeitpunkt, ab dem ich sie brauche.
Pfui Ede ... also Geyer ... ähem Geier.
Das ist ja ein häßlicher Stil ... wenn ich mir heute manchmal Programme von mir von vor 4 Jahren anschaue könnte ich auch ulfen - aber was soll's auf Änderungen habe ich auch keinen Bock mehr. Für Newbies muß das reichen.

Zitat von MathiasSimmack:
Benötige ich dann eine der Variablen doch mal vorher, dann übergebe ich sie meist per Konstante an die Funktion/Prozedur. Bei den o.g. Beispielkonstanten allerdings lasse ich mit mir reden und verschiebe sie auch mal weiter nach vorn, weil sich ihre Werte ja im Programm nicht ändern können.
Das klingt sauber. Bei mir sind Konstanten oft in einer extra Include oder direkt hinter dem implementation Schlüsselwort.
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: NM_RETURN - Problem

  Alt 1. Sep 2004, 14:50
@Assarbad: eigentlich erstelle ich nur eine listview und ein treeview:

Code:
        hTreeView := CreateWindowEx(WS_EX_CLIENTEDGE,
                                    WC_TREEVIEW,
                                    nil,
                                    WS_CHILD or WS_TABSTOP or WS_VISIBLE or
                                    TVS_HASLINES or TVS_LINESATROOT or TVS_HASBUTTONS or TVS_SHOWSELALWAYS,
                                    0,0,0,0,
                                    hwnd,
                                    HMENU(IDC_TREEVIEW),
                                    HInstance,
                                    nil);
                                   
        hListView := CreateWindowEx(WS_EX_CLIENTEDGE,
                                    WC_LISTVIEW,
                                    nil,
                                    WS_CHILD or WS_TABSTOP or WS_VISIBLE or
                                    LVS_REPORT or LVS_SHOWSELALWAYS or LVS_NOCOLUMNHEADER,
                                    0,0,0,0,
                                    hwnd,
                                    HMENU(IDC_LISTVIEW),
                                    HInstance,
                                    nil);
in der listview will ich nach einlesen der ordner in den treeview und der dateien ins listview diese dateien dann per return und doppelklick öffnen:

Code:
WM_NOTIFY:
      begin
      with PNMListView(lParam)^ do
        case hdr.code of
          NM_RETURN,
          NM_DBLCLK:
            OpenFile(hdr.hwndFrom);
        end;
      end;

// hier noch die procedure zum öffnen der dateien:

procedure OpenFile(const hLV: HWND; openwi: Boolean = FALSE);
var
  path: PChar;
begin
  if(ListView_GetSelectedCount(hLV) <> 1) then
    exit;

  path := PChar(GetPath(hTreeView,TreeView_GetSelection(hTreeView)));

  if not(FileExists(path + GetListItemText(hLV))) then
  begin
    ShowErrorMessage(hLV, GetLastError);
    exit;
  end;

  case openwi of
    TRUE: ShellExecute(hLV, nil, 'rundll32.exe', PChar('shell32.dll,OpenAs_RunDLL ' + path + GetListItemText(hLV)), nil, SW_NORMAL);
    FALSE: ShellExecute(hLV, nil, @GetListItemText(hLV)[1], nil, path, SW_NORMAL);
  end;

  if(GetLastError <> 0) and (GetLastError <> 1155) then
    ShowErrorMessage(hLV, GetLastError);

  if(GetLastError = 1155) and not openwi then
    if MessageBox(hLV, @(ShowErrorMessage(hLV, GetLastError, FALSE) + 'Möchten Sie manuell ein geeignetes Programm auswählen?')[1], ID_APP, MB_ICONQUESTION or 4) = IDYES then
      OpenFile(hLV, TRUE);
end;
wenn ich dies alles selbst erstelle (also ohne resource) dann klappt das öffnen wunderbar, nur fehlt dann die tab-funktion (nochmal danke an luckie für den hinweis... ). deshalb habe ich dank luckies tipp dies hier noch eingebaut, damit tab funktioniert:

Code:
  hwndMain := CreateWindow(PChar(MainWindowClass),
                         ID_APP,
                         WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CLIPCHILDREN or WS_CLIPSIBLINGS,
                         GetSystemMetrics(SM_CXSCREEN) div 2 - ID_MINWIDTH div 2,
                         GetSystemMetrics(SM_CYSCREEN) div 2 - ID_MINHEIGHT div 2,
                         ID_MINWIDTH,
                         ID_MINHEIGHT,
                         0,
                         0,
                         HInstance,
                         nil);


while GetMessage(Msg, 0, 0, 0) do
    if not(IsDialogMessage(hwndMain, Msg)) then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
und mit dieser funktion habe ich das gleiche problem wie wenn ich alles per resource erstelle (ist noch im anhang vom ersten post...)


und auf die frage, was ich für einen stil der dialog haben soll, weiß ich immernoch keine antwort... (eigentlich befindet sich ja der komplette code, eben nur mit resource, im anhang, aber kommt sowieso immer das gleiche problem...)


mfg
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#19

Re: NM_RETURN - Problem

  Alt 1. Sep 2004, 15:45
Also erstmal ist die Ressource komplett verkrüppelt. Du benutzt das gleiche Format wie ich in meinem uralten nonVCL-Tut. Wenn Luckie das (immernoch) verwendet, sollte er es schnellstens korrigieren. Das Format kennt nämlich nur der BRCC32.

Außerdem sind die Bemaßungen komplett krank. Das ListView ist größer als der ganze Dialog wenn man es in Visual-Studio lädt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

Re: NM_RETURN - Problem

  Alt 1. Sep 2004, 15:57
Ich erstell meine Dialog Ressourcen noch mit dem VC6 Ressourcen Editor und damit wurden auch die im Tutorial erstellt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz