AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Implement ListView

Ein Thema von EWeiss · begonnen am 10. Jan 2017 · letzter Beitrag vom 10. Jan 2017
Antwort Antwort
Seite 2 von 2     12
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Implement ListView

  Alt 10. Jan 2017, 10:39
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Implement ListView

  Alt 10. Jan 2017, 10:56
Jo wie ich es hier schon gemacht habe.

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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Implement ListView

  Alt 10. Jan 2017, 11:03
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#14

AW: Implement ListView

  Alt 10. Jan 2017, 11:08
WM_USER+x
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Implement ListView

  Alt 10. Jan 2017, 11:53
Noch einmal
Zitat:
nur müsste ich diese dann der Anwendung bekannt machen.
gruss
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Implement ListView

  Alt 10. Jan 2017, 12:35
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Implement ListView

  Alt 10. Jan 2017, 12:44
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

Geändert von EWeiss (10. Jan 2017 um 12:50 Uhr)
  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 08:26 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