PNG-Unterstützung erhält man z.B. durch http://pngdelphi.sourceforge.net/
Ggf. ist dabei die Version 1.5 zu verwenden, neuere Versionen sollen zumindest in älteren BCBs Probleme bereiten.
Nachtrag für den BCB/BDS2006 bzw. die neue Turbo-C++-Reihe:
- Unter Linker/Package Options: "Nur Laufzeit Package" aktivieren.
- Unter Packages: Haken bei "Laufzeit Packages" entfernen.
Hallo,
Das mit den Block einrücken mache ich bei mir mit Strgk i (links) bzw. u (rechts). Desweiteren gibt es verschiedene Toolsbibliotheken, die auch den Editor etwas aufbohren. Zu erwähnen sind hier
http://www.cnpack.org/index.php?lang=en
und
http://www.gexperts.org/
Der CBX hatte ja bis auf den Namen und den standardmässig mitgelieferten Compiler/Linker nichts mit dem "echten" C++Builder zu tun; beide Produkte verfolgen einen komplett unterschiedlichen Ansatz zum Erstellen von Programmen.
Mit Erscheinen des Borland Developer Studio 2006 zeichnet sich ab, dass der "echte" BCB zumindest vorerst weiterentwickelt wird. Der CBX hingegen hat offenbar keine Zukunft, zumindest nicht insoweit, als dass er den BCB ablösen würde. Deshalb macht es nicht länger Sinn, den CBX betreffende Fragen hier zu diskutieren, da kaum ein BCB-User den CBX ernsthaft einsetzt und somit kaum entsprechendes Fachwissen vorhanden ist. Statt dessen sorgt die Namensähnlichkeit immer wieder für Verwirrungen durch missverständlich gestellte Fragen oder Antworten.
Ab sofort gehören Fragen zum CBX deshalb in das Compiler-Forum hier. Es wäre natürlich schön, wenn Besucher des BCB-Forums, die tatsächlich auch über Kenntnisse im Umgang mit dem CBX verfügen, dort gelegentlich mit reinschauen, um eventuelle Fragen zu beantworten.
Um den übergebenen Dateinamen dann im eigenen Programm auszuwerten benutzt man üblicherweise die Funtion ParamStr(). Ein Beispiel:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
if (ParamStr(1) != "")
Memo1->Lines->LoadFromFile(ParamStr(1));
}
Als ergänzende Lektüre seien auch folgende Snippets empfohlen:
http://www.bytesandmore.de/rad/cpp/snipp/sc06016.php
http://www.bytesandmore.de/rad/cpp/snipp/sc03026.php
Wow, es funktioniert. Danke!!!!!!!
EDIT:
Vielleicht ist es was für die FAQ. Zumindest in den Newsgroups wird es oft gefragt, aber keine vernünftige Lösung.
Ein Beispiel für die FAQ.
Das Projekt besteht aus zwei Forms. Auf Form1 wird lediglich per Buttonklick Form2 geöffnet, wo dann der Download gestartet und der Fortschritt per ProgressBar angezeigt wird.
Form2 besitzt eine erweiterte Show-Methode, in der dafür gesorgt wird, dass die Form zuerst fertiggezeichnet wird, bevor weiterer Code ausgeführt wird. Prinzipiell handelt es sich dabei also um ein Pseudo-OnAfterShow-Event.
// Unit1.cpp
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->AfterShow();
}
// Unit2.h, unter public
...
void __fastcall AfterShow();
// Unit2.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
String filename = "c:\\cbx_datasheet.pdf";
String URL = "http://borland.com/cbuilderx/pdf/cbx_datasheet.pdf";
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
Button1->Caption = "Datei öffnen";
Button1->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::AfterShow()
{
Show(); // Standard-Show aufrufen
Application->ProcessMessages(); // alles fertigzeichnen lassen
// jetzt der eigene, im "OnAfterShow" auszuführende Code
TFileStream *fs = new TFileStream(filename, fmCreate);
IdHTTP1->Get(URL, fs);
delete fs;
Button1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::IdHTTP1WorkBegin(TObject *Sender,
TWorkMode AWorkMode, const int AWorkCountMax)
{
ProgressBar1->Max = AWorkCountMax;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::IdHTTP1Work(TObject *Sender, TWorkMode AWorkMode,
const int AWorkCount)
{
ProgressBar1->Position = AWorkCount;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
ShellExecute(0, "open", filename.c_str(), 0, 0, SW_SHOW);
}
//---------------------------------------------------------------------------
Hallo,
Hier http://home.att.net/~robertdunn/Yacs.html wird beschrieben wie das mit Richedit 2.0 und 3.0 geht. Da funktioniert das dann auch mit den Bitmaps.
Ciao
um auf diese Mail zu antworten:
ein mailer schrieb:
ich habe deinen Beitrag im C++ Forum gelesen "Überprüfen ob Programm aktiv" und versucht diese Sache nachzuvollziehen. Jedoch bekomme ich immer die folgenden Fehlermeldungen:
Aufruf der undefinierten Funktion 'EnumProcessModules'
Aufruf der undefinierten Funktion 'GetModuleBaseName'
Aufruf der undefinierten Funktion 'EnumProcesses'
man muss natürlich die richtige Header einbinden
#include "Psapi.h"