Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Bitte um Hilfe bin Anfänger auf diesem Gebiet

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.06.2005, 08:56 Uhr
ARM-Tec



Hallo Leute,

ich weiß das zu diesem Thema schon einiges im Forum steht. Nur verstehe ich das meiste nicht.

Mein Problem:

Ich habe eine Excel - Tabelle (Lagerverwaltung) die ich nun mit einem neuen C - Programm auslesen anzeigen und beschreiben möchte. Jetzt bin ich aber abgeneigt mit der Database zu arbeiten, weil ich diese garnicht behersche bzw. keine Ahnung habe. Ich würde gerne den Inhalt der Tabelle in einem Grid anzeigen lassen und bei Bedarf ändern und speichern. Weitere Funktionen wie, nach einem Eintrag suchen oder einen Eintrag ändern über Button, Filtern usw. sollte später vor gesehen sein. Habe ich da eine Chance dfas ohne die Database zu machen.

Ein bischen Code zum Anfang, wenn möglich mit Kommentaren, würde mir sehr helfen, z.B. Auslesen und beschreiben der Datei und wie ich die einzelnen Zeilen und Spalten anspreche.

Also ich hoffe Ihr seid so nett und hilft mir, weil ich auf diesem Gebiet noch keine Ahnung habe und Anfänger bin.

MFG

Arm-Tec
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.06.2005, 14:10 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Habe ich dass richig verstanden: Du willst eine MS Excel-Datei in einem TStringGrid (oder Ähnlichem) laden und das bearbeiten?

Also sozusagen Excel nachschreiben?

Das geht afaik nur per OLE oderf Filter (den du dir selbst schreiben müsstest),aber ich meine, mich zu erinnern, dass irgendeine Komponente beim BCB das Excel-Format bereits standartmäßig unterstützt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.06.2005, 14:50 Uhr
ARM-Tec



Hallo Reyx,

ja genau so ungefär. Nur das ich keine Mathematischen Formeln oder änliches bearbeiten möchte, sonden nur den Inhalt sprich eine Zahl oder den Text. Also den Inhalt per Mausklick über eine Button ändern z.B. die Anzahl/Menge eines Bestandes ändern und Speichern.
Das ganze sollte so in etwa so ablaufen.

Ich habe also die Excel - Tabelle, die eine Menge, die Bezeichnung, einen Lagerort und die Bestellnummer beinhaltet. Diese Daten ,möchte ich aus der Tabelle erst mal lesen und in ein TStringGrid anzeigen lassen. Wird nun ein Produkt aus dem Lagerort entnommen oder hinzugefügt, möchte ich über eine Eingabemaske (Edit - Felder und Buttons), die ich mit dem Borland Builder 4.0 Prof. erstelle, die Daten ändern und anschließen in die Tabelle schreiben.

Das ist zwar in zwei drei Sätzen zusammengefaßt was ich will, ich weiß aber nicht wie ich da anfangen soll. Wichtig scheint mir zuerst einmal die Inhalte der einzelnen Spalten und Zeilen aus der Tabelle auslesen zu können und darzustellen. Das Schreiben oder zugreifen auf die Zellen sollet ich natürlich auch noch können, doch dazu kann man später kommen.

So, ich hoffe jetzt ist klar was ich meine und hoffentlich ist jemand so nett und kann mir Starthilfe geben bei der Sache. Ich bin um jede Idee dankbar und einpar Zeilen Code wären auch nicht schlecht. Bedenkt aber ich bin Anfänger und verstehe noch nicht soviel vom Programmieren auf diesem Gebiet also Fach ausdrücke wie "Ole" sind mir noch fremd.

Danke an alle im voraus. Bis dann

MFG

Arm-Tec
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.06.2005, 21:29 Uhr
~f.-th.
Gast


hallo
der bcb4.0 schluckt auch delphi-files. ich hab leider keinen bcb zu testzwecken.
wenn du im netz zu bcb und excel nichts findest dann schau mal unter delphi und excel.
da gibt es komponeten. ich weis zur zeit allerdings nicht für welche excel-version.

mfg f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.06.2005, 12:36 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)



Zitat von ~f.-th.:
hallo
der bcb4.0 schluckt auch delphi-files...

Mit Einschränkungen aber nur! Nicht jeden DelphiLanguage-Code kann man auch mit dem BCB verwenden!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.07.2005, 07:58 Uhr
~Arm-Tec
Gast


Hallo Leute,

nun erstmal sorry, ich war geschäftlich eine längere Zeit unterwegs und konnte mich dem Problem erst wieder heute annehmen.

Schön und gut, aber ich sagte doch ich bin Anfänger auf diesem Gebiet, hat den keiner mehr Infos als das. Die Sachen mit den Delphi - Files verstehe ich nicht wirklich und ohne Beispiel wird´s dann noch schwieriger als mit dem Borland Builder. Trotzdem Danke für eure Hilfe.

Aber noch mal die Frage, wie löse ich das oben genannte Problem??? Bin ANFÄNGER und brauche vieleicht ein bischen Code.


Gruß ARM-Tec
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.08.2005, 15:14 Uhr
~Arm-Tec
Gast


Hallo Leute,

schade dass ich nicht mehr Infos von euch bekomme.

Nach eigen Initiative habe ich mal in anderen Foren geschaut und habe dort etwas über eine Eigenschaft wie "CommaText" gelesen. Diese lässt das Speichern der Inhalte von einem TStrinGrid in einem Datei Format CSV (?) zu. Gut damit könnte ich vieleicht auch arbeietn nur ist das Problem noch wie bekomme ich die Vorhandenen Daten einer Excel-Tabelle ind das TStringGrid. Kann mir vieleicht da jemand weiter helfen??? Wenn ein bischen Code dabei wäre würde ich auch nicht nein sagen.

Im voraus mal Danke Arm-Tec.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.08.2005, 16:38 Uhr
Th



Am einfachsten ist es, du speicherst die Excel-Tabelle (von Excel aus) im CSV-Format ab (dadurch werden nur die Werte gespeichert, alle Formatierungen gehen verloren, aber für das StringGrid ist das ja egal).

Dann lädst du diese CSV-Datei ein (einfaches Text-Format, schau einfach mal diese Datei mit Notepad o.ä. an) und setzt die einzelnen Werte dann in die ensprechende Spalte und Reihe des StringGrids.

Ich habe dies mal für eine Tabulator getrennte Datei gemacht, mußt halt in folgenden Code einfach '\t' durch ';' ersetzen:


C++:
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "ChildWin.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
//---------------------------------------------------------------------
__fastcall TMDIChild::TMDIChild(TComponent *Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------
void __fastcall TMDIChild::FormClose(TObject *Sender, TCloseAction &Action)
{
    Action = caFree;
}
//---------------------------------------------------------------------
void __fastcall TMDIChild::StringGridKeyDown(TObject *Sender, WORD &Key,
                                                TShiftState Shift)
{
    if(Shift.Contains(ssAlt))
    {
        switch(Key)
        {
            case VK_LEFT:
                if(StringGrid->ColCount > 1 &&
                    StringGrid->Col == StringGrid->ColCount-1)
                {
                    StringGrid->ColCount--;
                    StringGrid->Col = StringGrid->ColCount-1;
                }
                break;
            case VK_RIGHT:
                if(StringGrid->Col == StringGrid->ColCount-1)
                {
                    StringGrid->ColCount++;
                    StringGrid->Col = StringGrid->ColCount-1;
                }
                break;
            case VK_UP:
                if(StringGrid->RowCount > 1 &&
                    StringGrid->Row == StringGrid->RowCount-1)
                {
                    StringGrid->RowCount--;
                    StringGrid->Row = StringGrid->RowCount-1;
                }
                break;
            case VK_DOWN:
                if(StringGrid->Row == StringGrid->RowCount-1)
                {
                    StringGrid->RowCount++;
                    StringGrid->Row = StringGrid->RowCount-1;
                }
                break;
        }
        Key = 0;
    }
}
//---------------------------------------------------------------------------
void TMDIChild::LoadFromFile(const AnsiString &sFile)
{
    TStringList *sList = new TStringList;

    sFilename = sFile;
    sList->LoadFromFile(sFilename);

    StringGrid->RowCount = sList->Count;
    StringGrid->FixedRows = (sList->Count > 1)? 1 : 0;
    StringGrid->ColCount = 1;

    for(int i=0; i<sList->Count; i++)
        SetRow(StringGrid, i, sList->Strings[i]);

    delete sList;
}

void TMDIChild::SetRow(TStringGrid *grid, int nRow, const AnsiString &sText)
{
    AnsiString sCellText;
    int nCol = 0;
    for(int i=1; i<=sText.Length(); i++)
    {
        if(sText[i] == '\t')
        {
            SetCell(grid, nCol, nRow, sCellText);
            nCol++;
            sCellText = "";
        }
        else
            sCellText += sText[i];
    }
    if(!sCellText.IsEmpty())
    {
        SetCell(grid, nCol, nRow, sCellText);
    }
}

void TMDIChild::SetCell(TStringGrid *grid, int nCol, int nRow, const AnsiString &sText)
{
    if(nCol >= grid->ColCount)
        grid->ColCount = nCol + 1;
    grid->Cells[nCol][nRow] = sText;
}

bool TMDIChild::SaveToFile(const AnsiString &sFile)
{
    if(!sFile.IsEmpty())
        sFilename = sFile;

    if(sFilename.IsEmpty())
        return false;

    TStringList *sList = new TStringList;

    for(int i=0; i<StringGrid->RowCount; i++)
    {
        AnsiString sText = StringGrid->Cells[0][i];
        for(int j=1; j<StringGrid->ColCount; j++)
            sText += "\t" + StringGrid->Cells[j][i];
        sList->Add(sText);
    }

    sList->SaveToFile(sFilename);

    delete sList;

    return true;
}

void TMDIChild::GetPos(int &x, int &y)
{
    x = StringGrid->Col;
    y = StringGrid->Row;
}



Die Methode StringGridKeyDown dient zum Anlegen neuer Spalten und Zeilen innerhalb des StringGrids (falls du es auch brauchst oder aber du läßt es weg).
Mußt entsprechend ein "StringGrid" auf dem Formular haben, aber das kriegst du schon hin -)

Dieser Post wurde am 04.08.2005 um 16:40 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.08.2005, 08:20 Uhr
~Arm-Tec
Gast


Hallo Th,

erst mal vielen Dank für Deine Hilfe ich werde heute die Sache mal ausprobieren und Testen. Muss waqhrscheinlich ein paar Sachen nach Bedarf anpassen aber sonst müßte das gehen.

Also noch mal vielen Dabk Gruß Arm-Tec
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: