Thema: Delphi Spalten überprüfen...

Einzelnen Beitrag anzeigen

Simo

Registriert seit: 28. Apr 2014
51 Beiträge
 
#3

AW: Spalten überprüfen...

  Alt 30. Apr 2014, 16:19
Vielen Dank für die schnelle Antwort,

Diese Funktion überprüft nur die erste Spalte der über den Editor geöffnete Tabelle auf doppelter Eintrag.
Aber die Aufgabe lautet : Ich habe eine neue Formular aufzurufen, drauf sind 15 ComboBoxen. In jeder ComboBox sind 3 gleiche Items/Funktionen drin (MyChekGleich, MyChekInteger, MyChekFloat). (ComboBox1 für Spalte 1.. ComboBox2 für Spalte 2... )

Wenn ich in ComboBox1 z.B 'MyChekGleich' ausgewählt habe dann soll die erste Spalte auf Doppelter Eintrag überprüft werden. Da habe ich Schwierigkeiten..

Dann muss ich meine Funktion in der Unit unit1 (wo alles implementiert ist) aufrufen Und wenn ich die XML-Datei geöffnet habe und über Extras die Formular aufrufe und in der ComboBox1 'MyChekGleich' auswähle und diese Einstellung speichere, dann soll beim Speichern eine Fehlermeldung ausgegeben (z.B Zeile markieren) werden wenn ein Doppelter Eintrag vorkommt..

1. Zuerst habe ich wie gesagt dem Projekt ein Unit hinzugefügt, wo ich meine Funktion/Funktionen geschrieben habe.

2. Dann eine VCL-Formular (die über Extras aufzurufen ist), wo ich 15 ComboBoxen platziert habe, da wird ausgewählt, welche Überprüfung für welche Spalte durchzuführen ist. Einstellungen müssen in einem File gespeichert werden.

3. Ich habe in der Unit unit1, beim Prozedur SpeichernClick, meine Funktion aufgerufen und meine Abfrage gemacht...Showmessage('Reaktion..')

So siehst das ganze aus :

Code zu 1 :


Delphi-Quellcode:
function TMyChek.MyChekGleich(StringGrid:TggStringGrid):Integer ;
var
  a , b ,c : integer;
  Inhalt_Check : string;
  iDoppeltcounter:integer;
begin

  iDoppeltcounter:=0;
  Result:=-3;
  b:= StringGrid.RowCount; // Anzahl der Zeilen...


  for a:=0 to b do begin
    Inhalt_Check:=StringGrid.Cells[0,a]; //Zeile Um 1 erhöhen...
     for c:=0 to b do begin
        if Inhalt_Check=StringGrid.Cells[0,c] then begin
           iDoppeltcounter:=iDoppeltcounter+1;
             if iDoppeltcounter>1 then begin
                 Result:=c;
                 StringGrid.Selection:=...??
                 exit;
                 iDoppeltcounter:=0;
             end;
        end;
     end;
  end;
end;
Code zu 2 :

Delphi-Quellcode:
...
type
    Regel = record
      Spalte : Array [1..15] of string ;
      Kriterium : string ;
    end;

    const MaxAnzahlRegeln=9;
    const SpaltenAnzahl=15;

    var
    MyRegeln : Array [1..MaxAnzahlRegeln] of Regel;

...
procedure TFMRegeln.ComboBoxChangeAlg(Sender: TObject);

begin
  MyRegeln[STrToInt(ComboBox1.Text)].Spalte[(Sender as TComboBox).Tag]:=(Sender as TComboBox).Text;
end;



////////////////// Wird aufgerufen, wenn SaveBtn gedrückt ist../////////////////
procedure TFMRegeln.SaveBtnClick(Sender: TObject);
var
  i:integer;
  sAktDir:string;
 begin
  sAktDir:=GetCurrentDir;
  fileData:= TStringList.Create;
  fileData.add('Regeln');
  fileData.add('Regel :'+ComboBox1.Text);
  fileData.add('Kriterium für die Anwendung der Regel:'+Edit1.Text);
  for i := 1 to SpaltenAnzahl do
  fileData.add('Spalte:'+MyRegeln[StrToInt(ComboBox1.Text)].Spalte[i]);
  fileName:= sAktDir +'\Test.txt';
  //fileName:= ExtractFilePath(Paramstr(0))+'Test.txt';

  if fileName <> 'then begin
    fileData.SaveToFile(fileName);
      fileData.free;
        SaveBtn.Enabled := true;// Savebutton deaktivieren..
          close;
    end;
Code zum Punkt 3 :

Delphi-Quellcode:
////////////////////////// XML File speichern
procedure TForm1.Speichern1Click(Sender: TObject);
var
  MyXML:TBATM4XMLClass;
  i,r,S:integer;
  MyCheck:TMyChek;
  iResult:integer;
  //b : Boolean;

begin


  MyCheck:=TMyChek.Create;
  iResult:=MyCheck.MyChekGleich(MainGrid);

  //b:=MyCheck.MyChekFloat('10');

  if iResult<>-3 then begin
     Showmessage(' Doppelter Eintrag : ' + IntTostr(iResult));
  end;
       //if b then begin
          //Showmessage(' Das ist ein Integer...');

  Freeandnil(MyCheck);



  if UPPERCASE(copy(Filename,length(Filename)-2,3)) = 'TXTthen begin
    SavetextFile();
.
.
.
Ich find's selbst ein bisschen zu viel..als Frage!
Aber ich brauche Ihre Hilfe und bin sehr dankbar..
-)

Geändert von MrSpock ( 5. Mai 2014 um 08:22 Uhr) Grund: Delphi Tags eingefügt.
  Mit Zitat antworten Zitat