AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zelle teilen

Ein Thema von SaFu · begonnen am 18. Dez 2007 · letzter Beitrag vom 3. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

Zelle teilen

  Alt 18. Dez 2007, 20:10
Hi und zwar habe ich mal ne kompizeirte frage hoffe das geht mit dem StringGrid

undzwar habe ich eine StringGrid jetzt soll irgend eine zelle mit der Rechten Maustaste angeklickt werden können, dort soll ein PopupMenü aufgehen in dem drinsteht zelle teilen.
Wenn ich diesen Eintrag anklicke soll sich die ausgewählte zelle in zwei teilen sodas man oben und unten in die zellen was schreiben kann. so wie auf dem bild

geht das ????
Miniaturansicht angehängter Grafiken
zellteilen_645.jpg  
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Zelle teilen

  Alt 18. Dez 2007, 20:13
Geht imho nicht.
(Ausfühliche Antwort )
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Zelle teilen

  Alt 18. Dez 2007, 20:17
Mit OwnerDraw dürfte es gehen
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zelle teilen

  Alt 18. Dez 2007, 20:19
Moin, Moin,
vielleicht aus der entgegengesetzten Richtung ansetzen: In der Standarddarstellung werden 2 Zeilen zu einer optischen Zeile verbunden. Nach dem Befehl "Zelle teilen", wird die optische "Verbindung" der Zelle im OnDraw aufgehoben und du kannst die "obere" und "untere" Zeile ganz normal benutzen - ist nur so 'ne spontane Idee...
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Zelle teilen

  Alt 18. Dez 2007, 20:20
Vielleicht sollte ich sagen das ich noch diesen code habe der was drüber zeichnet könnte es dadurch schwerder werden

Delphi-Quellcode:
procedure TForm7.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var Celltext :string;
    Farbe :boolean;
    Textformat :cardinal;
    n :integer;
begin
  Textformat:= DT_SINGLELINE;
   with (Sender as TStringGrid) do

    begin
     Celltext:= Cells[ACol, ARow];
     Farbe:= True; //Standardeinstellung der Zellen ist einfarbig

      if (Cells[ACol,ARow] = 'fa') or (Cells[ACol,ARow] = 'FA')then
        begin
          Canvas.Brush.Color:= ClRed; //Zellenfarbe
          Canvas.Font.Color:= ClWhite; //Schriftfarbe
          Canvas.Font.Style:= Canvas.Font.Style + [fsBold]; //Text fett
        end;

     if (Cells[ACol,ARow] = 'np') or (Cells[ACol,ARow] = 'NP')then
        begin
          Canvas.Brush.Color:= ClBlue; //Zellenfarbe
          Canvas.Font.Color:= ClWhite; //Schriftfarbe
          Canvas.Font.Style:= Canvas.Font.Style + [fsBold]; //Text fett
        end;

     if (Cells[ACol,ARow] = 'aa') or (Cells[ACol,ARow] = 'AA')then
       begin
        Canvas.Brush.Color:= ClGreen; //Zellenfarbe
        Canvas.Font.Color:= ClWhite; //Schriftfarbe
        Canvas.Font.Style:= Canvas.Font.Style + [fsBold]; //Text fett
       end;

    if (Farbe) then
       begin
        //Hintergrund überschreiben
        SetBkMode(StringGrid1.Canvas.Handle, OPAQUE);
        Canvas.FillRect(Rect)
       end;

    if (ACol = 1) or (ACol = 0) then
       begin
        //Text wird zentriert
        Textformat:= Textformat or DT_CENTER or DT_VCENTER ;
        Canvas.Font.Style:= Canvas.Font.Style + [fsBold]; //Text fett
       end;

    if (ACol > 1) then //Zentrieren für alle Zellen
       begin
        //Text wird zentriert
        Textformat:= Textformat or DT_CENTER or DT_VCENTER;
       end;
  //Hier wird nun der Text ausgegeben
  DrawText(Canvas.Handle, PChar(Celltext), Length(celltext), Rect,Textformat);
end;
begin //Linien zwischen Zellen erzeugen
 n:=0 ;
 repeat
  n:=n+4;
   if (ARow = n) and (ACol >= StringGrid1.FixedCols) then
    begin
     StringGrid1.Canvas.Pen.Color := clBlack; // Linienfarbe
     StringGrid1.Canvas.Pen.Width := 2; // Stärkt der Linie
     StringGrid1.Canvas.MoveTo(Rect.Left,Rect.Bottom);
     StringGrid1.Canvas.LineTo(Rect.Right,Rect.Bottom);
    end;
  until n= 24;
 end;
end;
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Zelle teilen

  Alt 18. Dez 2007, 20:22
Geht es darum, dei Zelle nur "optisch" zu teilen, sodass sie sich weiterhin so verhält wie eine Zelle?
Oder soll die wirklich in zwei Zellen geteilt werden wie z.B. bei Excel? Ich hatte zweiteres verstanden. das erste soltle mit OwenrDraw möglich sein.
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Zelle teilen

  Alt 18. Dez 2007, 20:26
Sie soll sich eigentlich so verhalten wie eine normalle zelle Sie darf aber nicht größer werden, sondern nur teilen so das man oben und unten was reinschreiben kann, also muss auch gleichzeitig die schriftart kleiner werden
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Zelle teilen

  Alt 27. Dez 2007, 12:22
HI

kann mir vielleicht irgenwie einen ansatz geben hab jetzt mal die letzten Tag mal versucht das hinzubekommen ab ich bin am verzeweifeln
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#9

Re: Zelle teilen

  Alt 27. Dez 2007, 13:08
Moin hier mal in stichworten:

- die zelle mit mousetocell merken in der du den befehl gibst.

- stringgrid um eine spalte erweitern

- den inhalt aller felder nach der zelle einen weiter schieben, evt auch die breite etc...

- die spaltenbreite in der die zu teilene zelle ist halbieren, das selbe mit der spalte rechts daneben.

- im oncelldraw event der stringgrid das rect der beiden spalten addieren.
(bis auf die zelle die "geteilt" werden soll)
(rect.right := rect.right*2) oder ähnlich


So das sollte als ansatz dienen
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Zelle teilen

  Alt 29. Dez 2007, 19:04
Hi nochmal ich

also hab jetzt mal den anfang gemacht das ging ja schon

Delphi-Quellcode:
 procedure TForm7.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var col, row: integer;
begin
 StringGrid1.MouseToCell(x, y, col, row);
end;
aber wieso die zelle verschieben und die spalte um 1 erweitern ich möchte doch nur die ausgewählte zelle in zwei teilen so das ich oben und unten was schreiben kann.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 23:42 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