TStringGrid: Bei SetCells Ausrichtung des Strings bestimmen, aber wie?



  • Ja, ich hab mir durchgelesen, was OnDrawCell verlangt, aber es übergibt mir doch nischt.
    OnDrawCell iss doch void, ich gebe ihm nur mit, wo ich zeichnen möchte und on ein Fokus drauf ist und DefaultDrawing aktiv ist.

    Ausserdem ist SringGrid1 ein Zeiger: TStringGrid *StringGrid1;
    Oder hab ich Dich da missverstanden?

    Sorry, aber ich bezeichne mit trotz fertigem Berufsabschluss noch als relativer Anfänger im Umgang mit C++.

    Daher ist mir nicht gleich jede Lösung so einleuchtend.
    Warum ändert das Grid die Ausrichtung nach meinen Abläufen selbstständig?????



  • Schau dir mal (in der Hilfe oder im Code) die Deklaration von OnDrawCell an und sag mir nochmal ob das Teil void ist oder nicht. Klar der Rückgabewert ist void aber die Parameterübergabe ist das was interessiert.

    -junix

    [ Dieser Beitrag wurde am 01.04.2003 um 16:28 Uhr von junix editiert. ]



  • Aber ich versteh jetzte nicht, wie mir diese Ereignisbehandlungsroutine bei meinem Problem weiterhelfen kann?

    [ Dieser Beitrag wurde am 02.04.2003 um 09:32 Uhr von Fiesek editiert. ]



  • 1. Solltest du mal die beschreibung genau lesen. Du brauchst in OnDrawCell keine Schleife zu implementieren, denn die FUnktion wird bei jeder Zelle aufgerufen, wenn sie gezeichnet werden soll.
    2. Wenn du die Parameter genau anschaust, siehst du dass da nix von void ist.
    3. Schau nochmal das Thema in der FAQ an mit den farbigen Zellen

    -junix



  • Ich hab keine Schleife in OnDrawCell zu laufen.

    void __fastcall TSpoolerForm::UpdateGrid()
    {
       RowRenamer();
    
      Zeile = 0;
      CSpooler::TJLCIter beg = __spooler->getJobList()->begin();
      StringGrid1->RowCount= __spooler->getJobList()->size()+1;
      StringGrid1->Canvas->Font->Color = clWindowText;
      for(; beg != __spooler->getJobList()->end(); beg++)
      {
         Zeile++;
    
          StringGrid1->Cells [1] [Zeile] = beg->getJobName().c_str();
        StringGrid1->Cells [2] [Zeile] = beg->getPlotterName().c_str();
          StringGrid1->Cells [3] [Zeile] = beg->getPortName().c_str();
      }
    
      Zeile=0;
      beg = __spooler->getJobList()->begin();
      for(; beg != __spooler->getJobList()->end(); beg++)
      {
         Zeile++;
         for(int i = 1; i < 4; i++)
        {
            TRect rect = StringGrid1->CellRect(i, Zeile);
           DrawText(StringGrid1->Canvas->Handle,
                   StringGrid1->Cells[i][Zeile].c_str(),
                     -1,
                     &rect,
                     DT_SINGLELINE | DT_LEFT | DT_VCENTER);
        }
      }
    }
    

    So sieht das bei mir aus.
    Wenn sich in einer Liste aus STL etwas ändert, rufe ich UpdateGrid() auf und arbeite den Listeninhalt in das Grid ein.

    Die Schleife mit der Funktion DrawText() hab ich nur eingearbeitet, weil ich versuchen wollte, nachträglich Einfluss auf die Ausrichtung nehmen zu können.

    <edit>Code Tags repariert</edit>

    [ Dieser Beitrag wurde am 02.04.2003 um 09:45 Uhr von junix editiert. ]



  • Eben... du verfolgst den falschen Ansatz. Du sollst OnDrawCell verwenden denn du willst ja benutzerdefiniertes Zeichnen implementieren Ich wiederhole mich ungern aber schau dir nochmal das Beispiel mit den farbigen Zellen in der FAQ an und versuch es zu verstehen. Du musst einen ähnlichen Ansatz verfolgen. Sonst klappt das ned.

    -junix



  • Danke bis hierher!

    Ich glaube zu verstehen, auf welchen Weg Du mich verweisen willst!
    Nun werde ich versuchen die Lösung für mich zu finden und ein etwaiges Ergebnis hier posten!

    THX!

    Sorry, wegen dem Code-Wirrwarr, ich bin mit den Boardeigenschaften noch net so vertraut, werde aber nächstes Mal drauf achten!



  • Ahhhh, nu hab ich das verstanden!

    Ich war nun in der Lage, mein Problem zu lösen.
    Was ich gut fand, war, das Du mir die Lösung nicht gleich fertig präsentiert hast, sondern mir nur ein paar Wegweiser aufgestellt und Fragen gestellt hast.
    Dadurch hab ich es verstanden und sollte in Zukunft wenig Probs damit haben!

    THX!!!



  • hey, der erste der sich freut, keinen fertigen code serviert zu bekommen! gute arbeit junix. irgendwann zahlt es sich doch mal aus. 😉



  • Original erstellt von Sunday:
    [...]irgendwann zahlt es sich doch mal aus. 😉

    Tja, damit ist meine Hoffnung, dass Jansens und meine Bestrebungen doch nicht nur misverstanden werden doch nicht ganz gestorben *smile*

    Fiesek: Das Lob ist ganz auf deiner Seite denn im Gegensatz zu vielen anderen hast du nicht einfach darauf gewartet den Code präsentiert zu bekommen sondern hast die Hinweise auch ernsthaft verfolgt...

    Original erstellt von Fiesek:
    Dadurch hab ich es verstanden und sollte in Zukunft wenig Probs damit haben!

    Freut mich, dass du mein fernziel auch gleich durchschaut hast. (: Genau so stelle ich mir das hier auch vor. Hilfe zur Selbsthilfe. Leider wird das oft als "Quälerei" misverstanden /o:

    Gratuliere zur Lösung! Denn nüchtern betrachtet hast du sie (nach einem passenden Schubser) von allein gefunden (:

    -junix

    [ Dieser Beitrag wurde am 02.04.2003 um 23:04 Uhr von junix editiert. ]


Anmelden zum Antworten