AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

tListView-Spalten

Ein Thema von Thunderchild · begonnen am 20. Nov 2003 · letzter Beitrag vom 21. Nov 2003
Antwort Antwort
Seite 2 von 3     12 3      
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: tListView-Spalten

  Alt 20. Nov 2003, 20:08
Zitat von Chakotay1308:
denn im Endeffekt ist es doch nur eine Abkürzung für SendMessage-Nachrichten.
...die aber im Platform SDK explizit genannt wird. Für unbedarfte Entwickler wäre es sehr verwirrend, wenn sie LVM_GETCOLUMN benutzen könnten, aber nicht ListView_GetColumn. Denk ich mal
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: tListView-Spalten

  Alt 20. Nov 2003, 20:27
Zitat von neolithos:
Aber Vorsicht bei ???W-Funktionen, die sind meist falsch implementiert!
Öhm, Beweise?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#13

Re: tListView-Spalten

  Alt 20. Nov 2003, 20:40
Was könnte wohl daran falsch sein?

Delphi-Quellcode:
function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer;
begin
  Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
end;

function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  const plvfi: TLVFindInfoW): Integer;
begin
  Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
end;

function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer;
begin
  Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
end;

u.s.w.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: tListView-Spalten

  Alt 20. Nov 2003, 20:50
Hi,
also wenn die Borland so definiert hat, dann will ich nichts gesagt haben.

Chris
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#15

Re: tListView-Spalten

  Alt 20. Nov 2003, 20:54
Alle die den Source "CommCtrl.pas" haben können es bestätigen!

Gut das ich ihn an dem Tag (wo mir das aufgefallen ist) hatte!
Ich hatte nämlich schon an mir selbst gezweifelt! Warum es nicht funktioniert und nur ein Buchstabe angefügt wird!

Aber nun weis ich es ja!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#16

Re: tListView-Spalten

  Alt 20. Nov 2003, 21:09
Um mal zu meinem Problem zurück zu kommen:

neolithos Methode funktioniert jedenfalls. Hab halt die CommCtrl eingebunden.
Danke.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#17

Re: tListView-Spalten

  Alt 20. Nov 2003, 21:54
Zitat von neolithos:
Was könnte wohl daran falsch sein?
Ich tippe mal auf das fehlende W in den Nachrichten, weil Borland standardmäßig die normale Nachricht (ohne A und W) mit der Ansi-Version gleichsetzt:
Delphi-Quellcode:
const
  {$EXTERNALSYM LVM_GETSTRINGWIDTHA}
  LVM_GETSTRINGWIDTHA = LVM_FIRST + 17;
  {$EXTERNALSYM LVM_GETSTRINGWIDTHW}
  LVM_GETSTRINGWIDTHW = LVM_FIRST + 87;

  {$EXTERNALSYM LVM_GETSTRINGWIDTH}
  LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
In den C-Headerdateien gibt´s dafür die UNICODE-Definition. Ist die gesetzt, wird bei der Nutzung der Header auch die korrekte Nachricht (in dem Fall LVM_GETSTRINGWIDTHW) benutzt. Den gleichen Effekt könnte man mit bedingter Compilierung
Delphi-Quellcode:
{$DEFINE UNICODE}

// ... viele Codezeilen ...

const
  {$EXTERNALSYM LVM_GETSTRINGWIDTH}
{$IFDEF UNICODE}
  LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
{$ELSE}
  LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
{$ENDIF}
natürlich auch in den Units von Borland erreichen. Das setzt aber den Quellcode voraus, und man muss diesen bearbeiten ... bei der Masse an Units könnte das u.U. eine ganze Weile dauern, bis man alles nach evtl. Ansi- und Unicode-Nachrichten abgegrast hat.

Zitat von Chakotay1308:
Was mich wunderte war nur, dass Borland diese überhaupt übersetzt hat, denn im Endeffekt ist es doch nur eine Abkürzung für SendMessage-Nachrichten.
Ehrlich gesagt arbeite ich lieber mit den Makros, weil ich mir dabei in der Regel keine Gedanken um die Parameter der Nachricht machen muss. Ich übergebe das Notwendige an das Makro (= im Funktionskopf), und dann vertraue ich mal darauf, dass das Makro weiß was es tut.
Dass auch Microsoft dabei Fehler unterlaufen, beweisen Edit_GetCueBannerText und die dazu gehörende Nachricht EM_GETCUEBANNER .
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#18

Re: tListView-Spalten

  Alt 20. Nov 2003, 22:06
Das man Delphi-Programm, ob nonVCL oder VCL, nicht auf Uni-Code umschalten kann stört mich seit dem ich die vorzüge für Mehrsprachige Anwendungen entdeckt habe!

Weiterhin ist die Schlampig umgesetzte Thread-Sicherheit in der VCL mir ein Dorn im Auge!

Ich halte viel auf Delphi bzw. Object-Pascal, aber die zwei wünsche hätten die Borland-Leute schon mal Regeln können!

Doch wird durch .NET-Geschichte (was mich noch nicht überzeugt hat) ja die ganze VCL in den Hintergrund rücken! *schade*

Das war vielleicht OT aber ich musste es mal loswerden!
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#19

Re: tListView-Spalten

  Alt 21. Nov 2003, 09:17
Zitat von neolithos:
Doch wird durch .NET-Geschichte (was mich noch nicht überzeugt hat) ja die ganze VCL in den Hintergrund rücken! *schade*
Ich find´s gut. Die Programme werden wieder kleiner, weil die .NET-"Kompos" ja schon vorhanden sind. Und (habe ich mal irgendwann in einem Crashkurs von A.Kosch gelesen) wir müssen nicht mehr darauf warten, dass irgendwer neue Headerdateien übersetzt, bzw. wir müssen das nicht mehr selbst machen.

Was mich lediglich interessieren würde, sind ein paar spezielle Win XP-Dinge und deren Umsetzung in .NET. Okay, ich habe nur Beta 2 vom letzten VS.NET (nicht die aktuelle Version!), vielleicht ist das im aktuellen Visual Studio ja schon anders, aber irgendwie habe ich bspw. bei der List-View die neuen Befehle (Gruppierung, Spalte markieren) vermisst.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#20

Re: tListView-Spalten

  Alt 21. Nov 2003, 11:51
Im .NET gibt es kein

ScrollWindow
SetCaret
ListView-Owner-Data
ListView-Owner-Draw
...

jedenfalls habe ich es noch nicht gefunden!

Und API-Rufe (PInvokes) will ich nicht verwenden weil dies gegen den .NET-Etos (Plattform-Unabhängigkeit - die derzeit nicht existiert) verstoße.

Will man API-Rufe verwenden muss man C-Header doch wieder übersetzen.

[das geht hier langsam vom Thema ab]
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 09:28 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