AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Meherer Spalten glechzeitig anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Meherer Spalten glechzeitig anzeigen

Ein Thema von Panschi · begonnen am 15. Sep 2011 · letzter Beitrag vom 20. Sep 2011
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#1

AW: Meherer Spalten glechzeitig anzeigen

  Alt 15. Sep 2011, 08:44
Jepp, das ist die zu große Spaltenbreite. Der verlinkte Artikel befasst sich doch genau damit. Zur Not kannst Du die Spaltenbreite aber auch selbst festlegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Panschi
Panschi

Registriert seit: 30. Aug 2011
Ort: Sauerland
51 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: Meherer Spalten glechzeitig anzeigen

  Alt 15. Sep 2011, 08:53
Ich sehe endich Licht am Ende des Tunnels

Der Quellcode von deinem Link funktioniert zwar nicht wie gewünscht, aber ich hab daraus einfach folgendes gebaut, was funktioniert:
Delphi-Quellcode:
  for i := 0 to dbgMaster.Columns.Count -1 do
  begin
    Spalte := dbgMaster.Columns[i];
    Spalte.Width := Round(dbgMaster.Width/3); //3 wegen 3 vorhandenen Spalten
  end;

  for i := 0 to dbgSlave.Columns.Count -1 do
  begin
    Spalte := dbgSlave.Columns[i];
    Spalte.Width := Round(dbgSlave.Width/3);
  end;
dankeschön
Warum mögen Frauen OOP-Programmierer? Weil sie Klasse haben
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

AW: Meherer Spalten glechzeitig anzeigen

  Alt 15. Sep 2011, 09:03
Evtl. auch so (ungetestet):
Delphi-Quellcode:
procedure ResizeColumnsEqually(Grid: TDBGrid);
var
  i: integer;
begin
  if Assigned(Grid) then
    for i := 0 to Grid.Columns.Count - 1 do
      Grid.Columns[i].Width := Grid.ClientWidth div Grid.Columns.Count;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Panschi
Panschi

Registriert seit: 30. Aug 2011
Ort: Sauerland
51 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: Meherer Spalten glechzeitig anzeigen

  Alt 15. Sep 2011, 09:16
das funktioniert auch bestens
Warum mögen Frauen OOP-Programmierer? Weil sie Klasse haben
  Mit Zitat antworten Zitat
Benutzerbild von Panschi
Panschi

Registriert seit: 30. Aug 2011
Ort: Sauerland
51 Beiträge
 
Delphi XE2 Enterprise
 
#5

AW: Meherer Spalten glechzeitig anzeigen

  Alt 20. Sep 2011, 11:23
Kaum ist das erste Problem gelöst, habe ich schon wieder ein neues
Jetzt soll ich das Programm noch so umschreiben, dass die beiden Tabellen beim Aufruf direkt verglichen werden und bei Unterschieden in der Spalte "Description" sollen die jeweiligen Zeilen in der Slave-Tabelle farbig markiert werden.

Ich möchte das folgender Maßen machen:
Ich habe in der Slave ein berechnendes Feld eingefügt, welches den Description Wert der Slave-Tabelle, mit dem Description Wert der Master-Tabelle vergleicht. Sind die werte gleich wird keine Farbe gesetzt(wert = 0), ist in der Master kein wert, dann soll der Slave wertgelöscht werden und die Zeile rot markiert werden(wert = 2), soll ein Text in der Slave hinzugefügt werden oder geändert werden soll die Zeile gelb markiert werden(wert = 1). In der Prozedure dbgSlaveDrawColumnCell wird dann je nach Wert die richtige Farbe gesetzt, was auch funktioniert. Jedoch gibt es schwierigkeiten bei dem Calcfields...

Mein bisheriger Quelltext:
(mein berechnendes Feld heißt: QrySlaveVeraendert)

Delphi-Quellcode:
procedure TFMain.QrySlaveCalcFields(DataSet: TDataSet);
begin
  if ersterDurchgang = 0 then
  begin
    Inc(ersterDurchgang);
    QryMaster.First;
    QrySlave.First;
  end;

  if QryMaster.FieldByName('Description').Value <> QrySlave.FieldByName('Description').Value
  then
  begin
    if QryMaster.FieldByName('Description').Value = 'then
    begin
      QrySlaveVeraendert.Value := 2;
    end
    else begin
      QrySlaveVeraendert.Value := 1;
    end;
  end
  else begin
    QrySlaveVeraendert.Value := 0;
  end;

  if (QryMaster.Eof = false) and (QrySlave.Eof = false) then
  begin
    QryMaster.Next;
    QrySlave.Next;
  end
end;
Angehängt ist ein Screenshot meines Programmes nach Ausführen der Prozedur... wie zu sehen ist, bekommt er für die Master-Tabelle nicht die richtigen Werte. Falls ein Wert in der Slave vorhanden ist, wird dieser rot markiert, soll also gelöscht werden, obwohl in der Master Tabelle ein Wert vorhanden ist.
Angehängte Grafiken
Dateityp: jpg Ergebnis.jpg (33,5 KB, 7x aufgerufen)
Warum mögen Frauen OOP-Programmierer? Weil sie Klasse haben
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Meherer Spalten glechzeitig anzeigen

  Alt 20. Sep 2011, 11:40
Also eigentlich sollte sich der Satzzeiger des Slave im OnCalcFields nicht ändern. Die Berechnung erfolgt pro Datensatz. Du musst also ausserhalb für Synchronisierung von Master/Slave sorgen, in der Funktion selber vergleichst Du dann nur die Werte.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Panschi
Panschi

Registriert seit: 30. Aug 2011
Ort: Sauerland
51 Beiträge
 
Delphi XE2 Enterprise
 
#7

AW: Meherer Spalten glechzeitig anzeigen

  Alt 20. Sep 2011, 12:01
danke für die Hilfe
jetzt wird der Zeiger auf QrySlave nicht mehr geändert und siehe da... es klappt

Delphi-Quellcode:
procedure TFMain.QrySlaveCalcFields(DataSet: TDataSet);
begin
  if ersterDurchgang = 0 then
  begin
    Inc(ersterDurchgang);
    QryMaster.First;
  end;

  if QryMaster.FieldByName('Description').Value <> QrySlave.FieldByName('Description').Value then
  begin
    if QryMaster.FieldByName('Description').Value = 'then
    begin
      QrySlaveVeraendert.Value := 2;
    end
    else begin
      QrySlaveVeraendert.Value := 1;
    end;
  end
  else begin
    QrySlaveVeraendert.Value := 0;
  end;

  if QryMaster.Eof = false then
  begin
    QryMaster.Next;
  end
end;
Warum mögen Frauen OOP-Programmierer? Weil sie Klasse haben
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz