AGB  ·  Datenschutz  ·  Impressum  







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

Spalten überprüfen...

Ein Thema von Simo · begonnen am 30. Apr 2014 · letzter Beitrag vom 5. Mai 2014
 
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
 


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 04:59 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 by Thomas Breitkreuz