AGB  ·  Datenschutz  ·  Impressum  







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

canvas vor stringgrid

Ein Thema von bbBowser · begonnen am 4. Mär 2006 · letzter Beitrag vom 5. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
bbBowser
(Gast)

n/a Beiträge
 
#1

canvas vor stringgrid

  Alt 4. Mär 2006, 20:09
hi leute, bräuchte mal wiedre hilfe. ich hab en stringgrid und hätte gern en paar linien dicker als andre. jetzt hab ich mit canvas moveto und lineto linien gezogen und die korrekte position errechnet. allerdings sind die linien hinter dem grid nichtmehr sichtbar;( wie kann ich bezwecken, dass die linien vor dem grid auftauchen und nich dahinter? danke im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von konda
konda

Registriert seit: 20. Dez 2005
253 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: canvas vor stringgrid

  Alt 4. Mär 2006, 20:18
Drück auf das Canvas mit rechts drauf und dann auf Position->Nach vorne setzen.
  Mit Zitat antworten Zitat
bbBowser
(Gast)

n/a Beiträge
 
#3

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 12:32
sorry, aber ich versteh net wie du das meinst, das canvas is doch erst da, wenn ich das programm starte, und dann kann ichs so ja wohl nicht amchen? oder?

und wenn ich grad schon hier bin: wie muss ich das canvas plazieren(welche procedure) damit es nicht weggeht wenn ich das fenster minimiere und dann wieder zurückspringe, oder irgendein andres fenster drüberzieh? brauch ich da ne while-schlöeife oder sowas?

danke im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 12:40
Ich bin mir nicht ganz sicher, ob du jetzt Canvas oder die Paintbox meinst, und diese dynamisch erstellst. Es gibt aber, um es auch zur Runtime machen zu können, eine Methode Namens Delphi-Referenz durchsuchenBringToFront, mit der dürfts gehn.

Bezüglich dass der Canvas nimmer neu zeichnet, wenn ein anderes Fenster davor im Vordergrund war... dafür musst du das OnPaint-Event nehmen und darin die fetten Linien neu zeichnen.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
bbBowser
(Gast)

n/a Beiträge
 
#5

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 12:52
vielen dank für die schnelle antwort, mein 2. problem is auch schon gelöst, danke
aber das erste, hab ich jetzt gesehn, dass es für canvas anscheinend kein bringToFront gibt . vieleicht is mein denkansatz ja einfach falsch. wie würdet ihr das lösen:
ich hab en stringgrid und möchte von dem jede 3. linie horizontal und vertikal etwas dicker haben als alle andren. lieg ich da mit canvas total falsch? gibts was einfacheres? und was hats mit der paintbox genau auf sich?

sind jetzt vieleicht en bisschen viel fragen aufeinmal, sorry

hoffe auf hilfe, danke
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 13:04
Es gibt was einfacheres, das ich gerade gefunden hab, das aber immernoch mit dem Canvas arbeitet:
das OnDrawCell-Event. Das wird aufgerufen, wenn eine Zelle neu gezeichnet wird. d.h. du kannst dann abfragen (mit ACol und ARow), welche Zelle gerade neu gezeichnet wird, und kannst damit dann entscheiden, ob du die Zelle grafisch mit fetten Linien aufpeppeln willst oder nicht.
Mit dem Parameter Rect weißt du dann übrigens, wo du die Linie evt. zeichnen musst

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 13:08
Hallo,

ich würde das auch mit einer Ereignisbehandlungs-Routine in OnDrawCell lösen.
Ein Beispiel zum ausbauen:
Delphi-Quellcode:
  if (ARow = 3) and (ACol >= StringGrid1.FixedCols) then
    begin
    StringGrid1.Canvas.Pen.Color := clRed;
    StringGrid1.Canvas.Pen.Width := 2;
    StringGrid1.Canvas.MoveTo(Rect.Left,Rect.Bottom);
    StringGrid1.Canvas.LineTo(Rect.Right,Rect.Bottom);
    end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
bbBowser
(Gast)

n/a Beiträge
 
#8

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 13:22
nochma danke für die schnelle und kompetente antwort. nur scheint das wieder irgendwie mein vorstellungsvermögen zu übersteigen. wie muss ich das jetzt einbaun? wenn ichs in die ondrawcell mache sagt er "eigenschaft und methode showframe2 sind nicht kompatibel"

gruß carsten
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 16:05
Hallo,
was ist showframe2 ?

Zitat von bbBowser:
... wie muss ich das jetzt einbaun?
im Objekt-Inspektor hinter dem Ereignis OnDrawCell einen Doppelklick ausführen, dann erstellt Dir Delphi den Prozedur-Rumpf für die Ereignisbehandlungs-Routine. Darin setzt Du den Code. Der wird immer dann ausgeführt wenn eine Zelle neu gezeichnet werden muss.
Eine Zelle wird neu gezeichnet:
- Bei der ersten Darstellung des Grids beim Programmstart
- beim Scrollen des Grids
- wenn ein Eintrag in eine Zelle gesetzt wird
- wenn die Eigenschaft Objects der Zelle geändert wird
- ...
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
bbBowser
(Gast)

n/a Beiträge
 
#10

Re: canvas vor stringgrid

  Alt 5. Mär 2006, 16:35
ok, das mit dem doppelklick wusst ich net, danke allerdings zeigt er mir jetzt an " es gibt keine überladene version von rect, die man mit diesn argumenten aufrufen kann". was hat das jetzt schon wieder zu bedeuten? sorry wenn ich mich en bissl doof anstell, bin in delphi nochnet so der checker . ich post am besten ma das was ich jetzt hab, vieleicht hab ich ja irgendwas verpatzt:

Delphi-Quellcode:
...
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
if (ARow = 3) and (ACol >= StringGrid1.FixedCols) then
    begin
    StringGrid1.Canvas.Pen.Color := clRed;
    StringGrid1.Canvas.Pen.Width := 2;
    StringGrid1.Canvas.MoveTo(Rect.Left,Rect.Bottom);
    StringGrid1.Canvas.LineTo(Rect.Right,Rect.Bottom);
    end;
end;
...
so denk net das vorher und nacher is relevant.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:12 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