Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Implement ListView (https://www.delphipraxis.net/191383-implement-listview.html)

EWeiss 10. Jan 2017 09:39

AW: Implement ListView
 
Zitat:

Eigentlich müsste mal beim Zugriff auf Pointer noch den Zeiger dereferenzieren MessageStructure^.hwndFrom
Das geht nicht nur wenn MessageStructure als PNMHdr definiert ist. (ZeigerTyp erforderlich)

Dein anderer Vorschlag geht auch ohne Speicher Reservierung.

Delphi-Quellcode:
function TSkinListView.ListViewProc(WinHandle: hWnd; Msg: UINT; wP: WParam; lP: LParam): LRESULT;
begin

  case Msg of
    WM_LBUTTONDBLCLK:
      begin
        OldSelected := GetCurSel(WinHandle);
        MessageStructure.hwndFrom := WinHandle;
        MessageStructure.idFrom := DlgItemID;
        MessageStructure.code := NM_DBLCLK;
        SendMessageW(GetParent(WinHandle), WM_NOTIFY, DlgItemID, LParam(@MessageStructure));
        Result := 0;
        exit;
      end;
  end;
  Result := CallWindowProc(Pointer(FPrevClientProc), WinHandle, Msg, wP, lP);
end;
Ich lasse es mal mit NEW ;)
Aber gut zu wissen das es auch anders geht.

gruss

jaenicke 10. Jan 2017 09:56

AW: Implement ListView
 
Zitat:

Zitat von EWeiss (Beitrag 1358540)
Jo wie ich es hier schon gemacht habe.

Delphi-Quellcode:
SendMessageW(GetParent(WinHandle), WM_COMMAND, MAKELONG(DlgItemID, LBN_DBLCLK), lp);

Ich meinte so etwas wie:
Delphi-Quellcode:
const
  WM_MySuperSpecialOperation = WM_USER + 777; // ab WM_USER oder WM_APP kannst du eigene Botschaften definieren
var
  MyValue: TMyVeryOwnRecord;
begin
  SendMessageW(GetParent(WinHandle), WM_MySuperSpecialOperation, 0, @MyValue);
Kompiliert so wohl nicht, aber was ich damit zeigen möchte ist, dass du auch eine ganz eigene Message und einen ganz eigenen Recordtyp deklarieren kannst und damit arbeiten kannst.
WM_COMMAND gibt es ja im Standard auch schon. Du bist aber nicht auf diese Standard-Messages beschränkt.

EWeiss 10. Jan 2017 10:03

AW: Implement ListView
 
Zitat:

Du bist aber nicht auf diese Standard-Messages beschränkt.
Jo das ist klar nur müsste ich diese dann der Anwendung bekannt machen.
Deshalb nutze ich vorgegebene. ;) in der DLL soweit es geht.

gruss

himitsu 10. Jan 2017 10:08

AW: Implement ListView
 
WM_USER+x

EWeiss 10. Jan 2017 10:53

AW: Implement ListView
 
Zitat:

Zitat von himitsu (Beitrag 1358563)
WM_USER+x

Noch einmal ;)
Zitat:

nur müsste ich diese dann der Anwendung bekannt machen. :)
gruss

p80286 10. Jan 2017 11:35

AW: Implement ListView
 
Delphi-Quellcode:
const
  mymsg1:=WM_USER+1;
  mymsg2:=WM_user+2;
Ist ja nicht deeer Aufwand.
Oder geht's Dir um die Proceduren die die Messages verarbeiten sollen?


Gruß
K-H

EWeiss 10. Jan 2017 11:44

AW: Implement ListView
 
Zitat:

Zitat von p80286 (Beitrag 1358580)
Delphi-Quellcode:
const
  mymsg1:=WM_USER+1;
  mymsg2:=WM_user+2;
Ist ja nicht deeer Aufwand.
Oder geht's Dir um die Proceduren die die Messages verarbeiten sollen?


Gruß
K-H

Man wollte mir mitteilen das ich auch selbst definiert Messagen verwenden kann. (Was mir bekannt ist, ich aber nicht will)

Wenn ich jetzt Messagen in meiner DLL definiere bsp..

Delphi-Quellcode:
  BS_LABEL_LEFT      = BS_USERBUTTON + BS_LEFT;
  BS_LABEL_RIGHT     = BS_USERBUTTON + BS_RIGHT;
  BS_LABEL_CENTER    = BS_USERBUTTON + BS_CENTER;
  BS_LABEL_MULTILINE = BS_USERBUTTON + BS_LEFT + BS_MULTILINE;

und diese in meiner Anwendung unter bsp..
WM_NOTIFY verwenden will dann muss ich diese öffentlich machen.

Das muss ich aber nicht wenn ich als bsp. NM_DBLCLK verwende da diese Message dem ListView bekannt ist.
Ka warum jeder jetzt auf WM_USER rumreitet das ist mir doch bekannt ;)

Schaut doch in mein VPiano Sample da sind Hunderte von WM_USER+\WM_APP+ Messagen definiert.
Wie viel braucht ihr?

Delphi-Quellcode:
  ID_LABEL_INTRO          = WM_APP + 100; // Informations Label

  ID_FLIPNOTES            = WM_APP + 102; // Noten Umdrehen
  ID_DRUM                 = WM_APP + 103; // Drum Checkbox
  ID_INSTRUMENT           = WM_APP + 104; // Instrumenten Checkbox
  ID_VL                   = WM_APP + 105; // VL Checkbox
  ID_EFFECTS              = WM_APP + 106; // Effects Checkbox
  ID_LABEL_GENRE          = WM_APP + 107; // Informations Label
  ID_GLASS_OPACITY_LABEL  = WM_APP + 108; // Informations Label
  ID_TRACK_OPACITY        = WM_APP + 109; // Trackbar Transparent


  ID_LINEVERT             = WM_APP + 112; // Einfache Linie

  ID_VSCROLL              = WM_APP + 114;
  ID_VERSION              = WM_APP + 115; // Versions Info
  ID_BTN_ABOUT            = WM_APP + 116; // About Button
  ID_BTN_ABOUT2            = WM_APP + 117; // About Button KeyTasten Window
  ID_KNOB_SPEED           = WM_APP + 118; // Knob MidiTracker Geschwindigkeit
  ID_VOLUME_LABEL         = WM_APP + 119; // Informations Label
  ID_SUSTAIN              = WM_APP + 120; // Sustain Checkbox
  ID_SMALLESTNOTELLABEL   = WM_APP + 121; // Informations Label
  ID_KNOB_CHANNEL         = WM_APP + 122; // Channel Knob
  ID_CHANNEL_LABEL        = WM_APP + 123; // Informations Label
  ID_KNOB_CHORD           = WM_APP + 124; // Chord Knob
  ID_CHORD_LABEL          = WM_APP + 125; // Informations Label
  ID_OPEN                 = WM_APP + 126; // Midi Tracker File laden
  ID_SAVE                 = WM_APP + 127; // Midi Tracker File speichern
  ID_PLAY                 = WM_APP + 128; // MidiTracker abspielen
  ID_EXPORT               = WM_APP + 129; // Midi Tracker File zu Midi Exportieren
  ID_PRESETSONG           = WM_APP + 130; // Presetsong abspielen
  ID_BTN_BACKL            = WM_APP + 131; // Nächtes Hintergrundbild
  ID_BTN_BACKR            = WM_APP + 132; // Vorheriges Hintergrundbild
  ID_BACKGROUND_LABEL     = WM_APP + 133; // Informations Label
  ID_BACKGROUND           = WM_APP + 134; // Hintergrund Image
  ID_SWITCH               = WM_APP + 135; // Midi aktivieren/deaktivieren
  ID_MODULATION_LABEL     = WM_APP + 136; // Informations Label
  ID_KNOB_MODULATION      = WM_APP + 137; // Modulations Knob
  ID_DLG_INFOLABEL        = WM_APP + 140; // Informations Label
  ID_BTN_IMPORTANT        = WM_APP + 141; // Warnungs Bitmap
  ID_SPEEDLABEL           = WM_APP + 142; // Informations Label
  ID_SPEEDVALLABEL        = WM_APP + 143; // MidiTracker Geschwindigkeit
  ID_CHANNELLABEL         = WM_APP + 144; // Informations Label
  ID_CHANNELVALLABEL      = WM_APP + 145; // Channel Value
  ID_CHORDLABEL           = WM_APP + 146; // Informations Label
  ID_CHORDVALLABEL        = WM_APP + 147; // Chord Value
  ID_BEATSLABEL           = WM_APP + 148; // Informations Label
  ID_BTN_INTRO            = WM_APP + 149; // Beat Intro Button
  ID_BTN_FILL             = WM_APP + 150; // Beat Fill Button
  ID_BTN_PAUSE            = WM_APP + 151; // Beat Pause Button
  ID_BTN_ENDING           = WM_APP + 152; // Beat Ending Button
  ID_BTN_STOP             = WM_APP + 153; // Beat Stop Button
  ID_BTN_BEATR            = WM_APP + 154; // Nächster Beat Button
  ID_BTN_BEATL            = WM_APP + 155; // Vorheriger Beat Button
  ID_TRACK_BEAT           = WM_APP + 156; // Aktuell ausgewälter Beat
  ID_BTN_INSTR            = WM_APP + 157; // Nächstes Instrument Button
  ID_BTN_INSTL            = WM_APP + 158; // Vorheriges Instrument Button
  ID_BANK1                 = WM_APP + 159; // Instrumenten Bank1
  ID_BANK8                 = WM_APP + 166; // Instrumenten Bank8
  ID_INSTRUMENTLABEL      = WM_APP + 167; // Informations Label
  ID_MIDITRACKER          = WM_APP + 168; // MidiTracker anzeigen oder verstecken
  ID_USEKEY               = WM_APP + 169; // Focus für Tasten Eingaben
  ID_KEYBOARDMAP          = WM_APP + 170; // Keyboard Map anzeigen
  ID_KEYBOARDSETTING      = WM_APP + 171; // Keyboard Settings Window anzeigen
  ID_KEY_LABEL            = WM_APP + 172; // Informations Label
  ID_BLINKLABEL           = WM_APP + 173; // Informations Label
  ID_SHOWLYRICS           = WM_APP + 174; // Lyrics anzeigen
  ID_FPS_LABEL            = WM_APP + 175; // FPS label
  ID_TRACK_FPS            = WM_APP + 176; // Trackbar Frames pro Sekunden
  ID_LIMITFRAMES          = WM_APP + 177; // Frames limitieren
  ID_MIDIBOX              = WM_APP + 178; // Midi Tracker Anzeigen
  ID_EDITTRACKLABEL       = WM_APP + 179; // Informations Label
  ID_EDITTRACK1            = WM_APP + 180; // Midi Tracker Editier Button Track1
  ID_EDITTRACK16           = WM_APP + 195; // Midi Tracker Editier Button Track16
  ID_TRACK_MASTERVOL      = WM_APP + 196; // Channel MasterVolume
  ID_MASTERVOLLABEL       = WM_APP + 197; // MasterVolume Informations Label
  ID_TRANSPOSE_LABEL      = WM_APP + 198; // Informations Label
  ID_BTN_TRANSPUP         = WM_APP + 199; // Song nach oben Transponieren
  ID_HIDETRACKLABEL       = WM_APP + 300; // Informations Label
  ID_HIDETRACK1            = WM_APP + 301; // Midi Tracker Hidden Button HiddenTrack1
  ID_HIDETRACK16           = WM_APP + 316; // Midi Tracker Hidden Button HiddenTrack16
  ID_DRAWBUTTON           = WM_APP + 317; // Funktions Edit Button
  ID_INSERTBUTTON         = WM_APP + 318; // Funktions Einfügen Button
  ID_SELECTBUTTON         = WM_APP + 319; // Funktions Auswahl Button
  ID_COPYBUTTON           = WM_APP + 320; // Kopier Button
  ID_CUTBUTTON            = WM_APP + 321; // Ausschneiden Button
  ID_PASTEOVERBUTTON      = WM_APP + 322; // Einfügen Überschreibt die Noten
  ID_PASTEINSERTBUTTON    = WM_APP + 323; // Fügt Sie ein ohne zu Überschreiben
  ID_SPACEBUTTON          = WM_APP + 324; // Platz zwischen Noten schaffen
  ID_BTN_TRANSPDOWN       = WM_APP + 325; // Song nach unten Transponieren
  ID_BTN_SMALLNDR         = WM_APP + 326; // Nächster Kleinster Notenwert im Grid
  ID_BTN_SMALLNDL         = WM_APP + 327; // Vorheriger Kleinster Notenwert im Grid
  ID_OVERLAYLABEL         = WM_APP + 328; // StartSpur ab der Gespielt werden soll
  ID_BTN_SYS              = WM_APP + 329; // Anwendungs Icon
  ID_NEWBUTTON            = WM_APP + 330; // MidiTracker Grid löschen Variablen neu Initialisieren
  ID_REVERSENOTES         = WM_APP + 331; // Entgegengesetzte Noten Button
  ID_REWIND               = WM_APP + 332; // StartSpur auf Ausgangsstellung zurück setzen
  ID_SBARFRAME            = WM_APP + 333; // Container für Sidebar Labels
  ID_TBARFRAME            = WM_APP + 334; // Container für Topbar Labels
  ID_LOADEDFILE           = WM_APP + 335; // Informations Label
  ID_LOADEDFILEVAL        = WM_APP + 336; // Zeigt das File an das geladen wurde
  ID_IMPORT               = WM_APP + 337; // Importieren von MidiFile
  ID_SMALLESTNOTELABELVAL = WM_APP + 338; // Kleinste Note Value
  ID_BEATSPERMEASURE      = WM_APP + 339; // Takt Informations Label
  ID_VOLUME1               = WM_APP + 340; // Volumen Track1
  ID_VOLUME16              = WM_APP + 355; // Volumen Track16
  ID_BEATSPERMEASUREVAL   = WM_APP + 356; // Takt Value Label
  ID_BTN_BEATSPERMEASURER = WM_APP + 357; // Nächste Taktrate
  ID_BTN_BEATSPERMEASUREL = WM_APP + 358; // Vorherige Taktrate
  ID_SOUNDTIME            = WM_APP + 359; // Komplette Laufzeit Song
  ID_MEDIATIMER           = WM_APP + 360; // Aktuelle Laufzeit Media Timer
  ID_CLOCK                = WM_APP + 361; // Uhr
  ID_PIANOBACK            = WM_APP + 362; // Piano KeyBoard Hintergrund
  ID_KEYPIANOBACK         = WM_APP + 363; // Piano KeyTasten Hintergrund
  ID_FRAMEOPTION          = WM_APP + 364; // Frame Option
  ID_FRAMEEDITTRACK       = WM_APP + 365; // Frame Edit Track
  ID_FRAMEEDITTRACKB      = WM_APP + 366; // Frame Edit TrackB
  ID_FRAMEHIDETRACK       = WM_APP + 367; // Frame HideTrack
  ID_BACKGROUNDFRAME      = WM_APP + 368; // Background Frame
  ID_FRAMEPIANOBACK       = WM_APP + 369; // Piano Background Frame
  ID_FRAMELISTE           = WM_APP + 370; // Frame Liste
  ID_FRAMELEFTSIDE        = WM_APP + 371; // Frame auf der Linken Seite
  ID_FRAMEINSTRUMENT      = WM_APP + 372;
  ID_FRAMEVL              = WM_APP + 373;
  ID_FRAMEEFFECTS         = WM_APP + 374;
  ID_FRAMEDRUMS           = WM_APP + 375;
  ID_FRAMEUSEKEY          = WM_APP + 376;
  ID_FRAMEUSEKEY2          = WM_APP + 377;
  ID_BACKGROUNDFRAME2      = WM_APP + 378;
  ID_FRAMEPIANOBACK2       = WM_APP + 379;
  ID_TBACK2                = WM_APP + 380;
  ID_BACKGROUNDFRAME3      = WM_APP + 381;
  ID_INFOLABEL            = WM_APP + 382;
  ID_INFOLABEL2            = WM_APP + 383;
  ID_BTN_ICON             = WM_APP + 384;
  ID_LOADMIDIFILES        = WM_APP + 385;
  ID_PLAY2                 = WM_APP + 386;
  ID_BTN_DESIGN           = WM_APP + 387;
  ID_INSTRUMENTLIST       = WM_APP + 388; // InstrumentenListe
  ID_DRUMLIST             = WM_APP + 389; // DrumListe
  ID_EFFECTLIST           = WM_APP + 390; // EffektListe
  ID_VLLIST               = WM_APP + 391; // VLListe
  ID_LYRICSFRAME          = WM_APP + 392; // Lyrics Frame
gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Seite 2 von 2     12   

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