AGB  ·  Datenschutz  ·  Impressum  







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

Tabelle und Rahmen

Offene Frage von "pauletta82"
Ein Thema von pauletta82 · begonnen am 14. Nov 2007 · letzter Beitrag vom 20. Nov 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#11

Re: Tabelle und Rahmen

  Alt 15. Nov 2007, 07:43
Zitat von pauletta82:
[...] heißt also dass man in der ersten spalte auch per klick text einfügen kann, während die beiden letzten spalten zur reinen anzeige gedacht sind [...]
Das hört sich nun aber sehr nach TListView an ^^ ... hier mal ein Denkanstoß:

Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
var
  R: TRect;
begin
  With (Sender as TListView).Canvas do
  begin
    R := Item.DisplayRect(drBounds);
    MoveTo(R.Left, R.Bottom - 1);
    LineTo(R.Right, R.Bottom - 1);
  end;
end;
Chris
  Mit Zitat antworten Zitat
pauletta82

Registriert seit: 14. Nov 2007
21 Beiträge
 
#12

Re: Tabelle und Rahmen

  Alt 16. Nov 2007, 08:50
der ansatz ist gut, die linie wird auch gezeichnet an der richtigen stelle, aber es tritt noch folgendes problem auf:

die linie wird erst gezeichnet wenn ich mit der maus über die entsprechende zeile scrolle,
wenn ich diese zeile dann anklicke und danach eine andere zeile anklicke, ist die linie unter der ersten zeile auf einmal wieder weg, sie wird erst dann wieder neu gezeichnet wenn ich wieder mit der maus darüber scrolle...
ich hab schon eine ganze menge ausprobiert und versucht, aber bekomme das problem nicht in den griff,
irgendwie wird diese erste linie zwischenzeitlich überschrieben, in welcher reihenfolge wird denn das listview gemalt? hab auch mal mit dem status rumprobiert, aber nichts passendes gefunden, gibt es keinen "allgemeinen" status, der immer ausgeführt wird??


begin
With (Sender as TListView).Canvas do
begin
R := Item.DisplayRect(drBounds);
MoveTo(R.Left, R.Bottom - 1);
LineTo(R.Right, R.Bottom - 1);
end;
end;[/delphi][/quote]
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Tabelle und Rahmen

  Alt 16. Nov 2007, 09:18
Zitat von pauletta82:
[...] gibt es keinen "allgemeinen" status, der immer ausgeführt wird??
Die Draw-Ereignisse werden bei jeder Zeichenoperation aufgerufen. Der Status ist dazu da, um zu wissen wie du ggf. Zeichnen musst - bei deiner Linie - die unabhängig vom Status ist - kannst du den Status einfach ignorieren ...
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#14

Re: Tabelle und Rahmen

  Alt 16. Nov 2007, 11:45
Ich habe Mittagspause und nix anderes zu tun wie es schein

ListView.ViewStyle := vsReport;

Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
var
  R: TRect;
begin
  If Stage = cdPostPaint then With Sender as TListView do
  begin
    R := Item.DisplayRect(drBounds);
    Canvas.MoveTo(R.Left, R.Bottom - 1);
    Canvas.LineTo(R.Right, R.Bottom - 1);
  end;
end;
Funktioniert bei mir wunderbar ...
Chris
  Mit Zitat antworten Zitat
pauletta82

Registriert seit: 14. Nov 2007
21 Beiträge
 
#15

Re: Tabelle und Rahmen

  Alt 19. Nov 2007, 08:04
hallo,

soweit war ich auch schon, aber leider hats immer noch nicht geklappt, hab noch immer dasselbe problem:
"...die linie wird erst gezeichnet wenn ich mit der maus über die entsprechende zeile scrolle,
wenn ich diese zeile dann anklicke und danach eine andere zeile anklicke, ist die linie unter der ersten zeile auf einmal wieder weg, sie wird erst dann wieder neu gezeichnet wenn ich wieder mit der maus darüber scrolle... "
nochmal zur klarstellung: die linie soll genau dann gezeichnet werden, wenn ich die "Gleich"-Taste drücke, und sie soll unabhängig von irgendwelchen mausbewegungen gezeichnet werden und auch nicht wieder entfernt werden wenn ich eine zeile markiere...


Zitat von Deep-Sea:
Ich habe Mittagspause und nix anderes zu tun wie es schein
...
Funktioniert bei mir wunderbar ...
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Tabelle und Rahmen

  Alt 19. Nov 2007, 08:12
Zitat von pauletta82:
soweit war ich auch schon, aber leider hats immer noch nicht geklappt, hab noch immer dasselbe problem:
"...die linie wird erst gezeichnet wenn ich mit der maus über die entsprechende zeile scrolle,
wenn ich diese zeile dann anklicke und danach eine andere zeile anklicke, ist die linie unter der ersten zeile auf einmal wieder weg, sie wird erst dann wieder neu gezeichnet wenn ich wieder mit der maus darüber scrolle... "
nochmal zur klarstellung: die linie soll genau dann gezeichnet werden, wenn ich die "Gleich"-Taste drücke, und sie soll unabhängig von irgendwelchen mausbewegungen gezeichnet werden und auch nicht wieder entfernt werden wenn ich eine zeile markiere...
Das habe ich schon zur Kenntnis genommen. Aber dies kann eigentlich nicht sein, da die OnDraw Ereignisse alle beim Zeichnen kommen (logisch) und nicht erst wenn die Maus über der Zeile ist ...
Der Fehler muss wohl bei dir oder deinem Delphi liegen Welche Version nutzt du eigentlich?
Du wirst ja sicherlich etwas mehr Code haben als diesen Schnipsel, vlt. "zerstörst" du damit den reibungslosen Ablauf?!

PS: Zum testen kannst du ja ein neues Projekt anfangen und erstmal nur das Zeichnen der Linie testen. Wenn dies geht weißt du, dass der Fehler in dem Programm liegen wird ...
Chris
  Mit Zitat antworten Zitat
pauletta82

Registriert seit: 14. Nov 2007
21 Beiträge
 
#17

Re: Tabelle und Rahmen

  Alt 19. Nov 2007, 08:47
ich benutze delphi 2007... oder ob es daran liegt???

[...PS: Zum testen kannst du ja ein neues Projekt anfangen und erstmal nur das Zeichnen der Linie testen. Wenn dies geht weißt du, dass der Fehler in dem Programm liegen wird ...[/quote]
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#18

Re: Tabelle und Rahmen

  Alt 19. Nov 2007, 08:49
Zitat von pauletta82:
ich benutze delphi 2007... oder ob es daran liegt???
Gut zu wissen. Ich habe "nur" D2006 ...
Geht denn das Zeichnen der Linie, wenn du mal ein komplett neues Projekt nur zum testen anfängt?
Wenn ja, poste doch mal etwas von deinem Code, vlt. wird dort ja ein Fehler ersichtlich
Chris
  Mit Zitat antworten Zitat
pauletta82

Registriert seit: 14. Nov 2007
21 Beiträge
 
#19

Re: Tabelle und Rahmen

  Alt 19. Nov 2007, 08:52
hab ein neues projekt erstellt und den code entsprechen reinkopiert, leider immer noch derselbe fehler... hier mein test-coding aus dem "leeren" projekt:

procedure TForm1.FormCreate(Sender: TObject);
var
NewItem: TListItem;

begin
//zum Probieren für das ListView -->später löschen
//Vorab-Definitionen
lsvBand.ViewStyle := vsReport;
lsvBand.RowSelect := True;



//Füllen der ListView
NewItem := lsvBand.Items.Add; //Zeile erzeugen (Item 0)
NewItem.Caption := '4711'; //Item 0, Caption
NewItem.SubItems.Add('Hallo'); //Item 0, SubItem 0
NewItem.SubItems.Add('Hallo'); //Item 0, SubItem 1
NewItem.SubItems.Add('Hallo'); //Item 0, SubItem 2

NewItem := lsvBand.Items.Add; //nächste Zeile erzeugen
NewItem.Caption := '4712';
NewItem := lsvBand.Items.Add; //nächste Zeile erzeugen
NewItem.Caption := '4713';
NewItem := lsvBand.Items.Add; //nächste Zeile erzeugen
NewItem.Caption := '4714';
NewItem := lsvBand.Items.Add; //nächste Zeile erzeugen
NewItem.Caption := '4715';

//Zellen überschreiben
// Zeile Spalte
lsvBand.Items[2].Caption := 'tttt';
lsvBand.Items[0].SubItems[0] := 'kiki' ;
end;


procedure TForm1.lsvBandAdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);

var
rechteck: TRect;

begin
with lsvBand.Canvas do
begin
// If Stage = cdPostPaint then With Sender as TListView do
begin
//zeichnet eine Linie unterhalb der Zeile "Item"
rechteck := Item.DisplayRect(drBounds);
MoveTo(rechteck.Left, rechteck.Bottom-1);
LineTo(rechteck.Right, rechteck.Bottom-1);
end;

//Abfrage ob Eintrag markiert
if cdsSelected in State then
begin
font.Color := clwhite;

end

end;

end;


[...Gut zu wissen. Ich habe "nur" D2006 ...
Geht denn das Zeichnen der Linie, wenn du mal ein komplett neues Projekt nur zum testen anfängt?
Wenn ja, poste doch mal etwas von deinem Code, vlt. wird dort ja ein Fehler ersichtlich [/quote]
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#20

Re: Tabelle und Rahmen

  Alt 19. Nov 2007, 09:03
Zitat von pauletta82:
hab ein neues projekt erstellt und den code entsprechen reinkopiert, leider immer noch derselbe fehler... hier mein test-coding aus dem "leeren" projekt:
Mhh ... tut mir leid. Vlt funktioniert es bei D2007 ja nicht.
Evtl. testet ein netter Forumsnutzer das noch mal für uns?! ^^
Chris
  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 15:09 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