willkommen bei

adecc


  #ifdef BUILD_WITH_VCL

  class MyListViewStreamBuf : public MyStreamBufBase {
     private:
       TListView*  lvValue;
       TListItem*  lvItem;
       bool boNewItem;
     public:
       MyListViewStreamBuf(TListView* para, bool boClean = true) : MyStreamBufBase() {
         lvValue = para;
         lvItem    = 0;
         if(boClean) lvValue->Items->Clear();
         lvValue->ViewStyle = vsReport;
         lvValue->RowSelect = true;

         boNewItem = true;
         }


       virtual ~MyListViewStreamBuf(void) {
         lvValue = 0;
         lvItem  = 0;
         }

       virtual int overflow(int c) {
         if(c == '\n') {
           Write();
           //lvItem->MakeVisible(false);
           boNewItem = true;
           }
         else {
           if(c == '\t') {
              Write();
              }
           else {
              os.put(c);
              }
           }
         return c;
         }

       virtual void Write(void) {
         if(boNewItem) {
           lvItem = lvValue->Items->Add();
           lvItem->Caption = os.str().c_str();
           boNewItem = false;
           }
         else {
           lvItem->SubItems->Add(os.str().c_str());
           }

         os.str("");
         return;
         }

     };

  #endif
  

//---------------------------------------------------------------------------
          #include <vcl.h>
          #pragma hdrstop

          #include "MainForm.h"

                        #include <string>
                        #include <algorithm>
                        #include <functional>
                        using namespace std;
                        using namespace placeholders;
          //---------------------------------------------------------------------------
          #pragma package(smart_init)
          #pragma resource "*.dfm"
          TfrmMain *frmMain;
          //---------------------------------------------------------------------------
          __fastcall TfrmMain::TfrmMain(TComponent* Owner) : TForm(Owner) { }

    //---------------------------------------------------------------------------
    void __fastcall TfrmMain::FormCreate(TObject *Sender) {
       Caption               = L"Hilfsprogramm für Blog";
       Panel1->Caption       = L"";
       btnTransform->Caption = L"Transformiere";
       Memo1->Lines->Clear();
       }

//---------------------------------------------------------------------------
void mytransform(char para, string& strTarget) {
   switch(para) {
     case '&' : strTarget += "&"; break;
     case '<' : strTarget += "&lt;";  break;
     case '>' : strTarget += "&gt;";  break;
     case '\t': strTarget += "   ";   break;
     default:
       {
       char szBuffer[2] = { para, 0 };
       strTarget += szBuffer;
       }
     }
   return;
   }


void __fastcall TfrmMain::btnTransformClick(TObject *Sender) {
   string strSource = AnsiString(Memo1->Text).c_str();
   string strTarget = "";
   strTarget += "<pre><code class=\"language-cpp\">\r\n";
   for_each(strSource.begin(), strSource.end(), bind(mytransform, _1, ref(strTarget)));
   strTarget += "\r\n</code></pre>\r\n";
   Memo1->Text = strTarget.c_str();
}
//---------------------------------------------------------------------------


#ifndef MyFormH
#define MyFormH

#include <vcl.forms.hpp>

class TMyWait {
   private:
      TCursor old_cursor;
   public:
      TMyWait(void) {
         old_cursor = Screen->Cursor;
         Screen->Cursor = crHourGlass;
         }

      ~TMyWait(void) {
         Screen->Cursor = old_cursor;
         }
   };

#endif

adecc Online Konzept

Listen in FMX (StringGrid)

Listen in FMX, Nutzung des StringGrids

VCL ListViews als Standard C++ Stream

Weitere GUI- Elemente und C++- Streams

Einsatz weiterer GUI- Elemente als Stream

RAII beim Verwenden der stream- Neuzuordnungen

Benutzung von RAII im Zusammenhang mit den Stream- Umlenkungen

Kleine Hilfstools, trainiere deine C++ Kenntnisse

C++ als Leistungssport

Verwendung von Standardstreams zur Ausgabe in Memofeldern

Eine Reihe von Blogposts zur Erklärung, wie man Standardstreams in C++ mit VCL- Komponenten verbinden kann.

Konvertierung der Delphi Stringtypen

Listen in FMX, Nutzung des StringGrids

RAII und plattformunabhängige Bildschirmcursor

Kommentar zu "Eine IDE, sie zu knechten" (Heise c't 10/2018)

Der adecc-Blog: Aktuelles aus der Welt von C++