새우의 세상사

원문 링크 : [링크] GNU-Make 강좌[KLDP.org]

전체 파일 : [링크] GNU-Make 강좌

Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

원문 링크 : [펌] Borland C++Builder Links


Borland C++Builder Links

I'm slowly going thru all my bookmarks for C++Builder and adding some comments. Of course, the Internet being what it is, this means that I no sooner check something before it disappears for good. Ah well... The links below will pop up in another window, so you can try and explore them all without losing your place. Please let me know if you find a busted link or a new link that I should check out.

Main Borland Support Pages

These are the main Borland web sites for C++Builder. Please be sure to check out the FAQ before asking any questions!

Inprise's Borland C++Builder main page
Inprise's Borland C++ Developer Support Page
The wonderfully helpful C++Builder newsgroups
MER Systems newsgroup search Borland Community Borland's growing web community. You can find the C++ Community here.
BDE Developer support pages

Components

Commercial, shareware and freeware components, libraries and tools. The difference between commercial and shareware is pretty fine, except that usually commercial components only have demos, either applications or they just allow you to use them while in the IDE.
  • Delphi Super Page : A huge searchable library of components
  • ZBuilder : Communication components ZSocket & ZComm (Commercial)
  • Alan Garny's Hellix : TOpenGL, TTransBitmap, and more (Shareware)
  • Dr John Maddock's Home Page : Regex++, a regular expression C++ library
  • The DELPHI Deli : Collection of Dephi & C++Builder components
  • RXLib : Really nice set of components, but only just barely works with C++Builder. Please don't ask me for support! (Freeware)
  • Raize Software Solutions, Inc. : Pretty nice package of components (Commercial)
  • Delphi32.com : a Delphi site, with lots of components
  • Plasmatech Software Design : Shell Control Pack & Structure Storage Library (Commercial)
  • ZieglerSoft component library : One of my favorite component sets. Includes every button type you can think of and more! (Shareware)
  • Francois PIETTE English Page : Lots of cool components, most notably the Internet Component Suite (Freeware)
  • Andreas Horstemeier's Homepage : Some cool components, including Internet ones (Freeware)
  • Softouch Development Inc. : The Grid Collection (Commercial)
  • Delphi Goodies : Grep utility and search component (Shareware)
  • Fitco Home Page : Delphi components, but w/source, so should(?) work with C++Builder (Freeware)
  • DDO Organisation English Home Page : TDBTreeView component (Shareware)
  • Multilizer : Multilanguage Component Libary (Commercial)
  • Lingscape : Mulitlanguage Designer components (Commercial)
  • NetMasters : Home of the BCB Internet components, FastNet (Commercial)
  • Peter's Component Site : Bunch of freeware and shareware components, mostly for Delphi, some BCB (Shareware)
  • CoolDev.Com - CoolControls and CoolMenus, some interesting components (Shareware)
  • Allround Automations : Direct to Oracle component, skipping the BDE (Commercial)
  • Quality Software Components Ltd : Version control and Installation programs (Freeware and Commercial)
  • MJ Freelancing : shareware registration component, math lib, and a set of freeware components (Commercial)
  • ObjectDriver : an Open Object Wrapper dedicated to Relational Databases Reusing (Freeware)
  • RQ's Profiler : Profiling tool (Crippleware)
  • Engineering Objects Internationl : ClassBuilder, code templates, random number class (Commercial)
  • KpGb Software : VCLZip - .zip reading component (Shareware)
  • Sulako Developments : GIF image components (Freeware)
  • Nicholas Kingsley's Programming : LinkList & Amnesia, a sprite engine (Freeware)
  • Mizar Buttons : Button component (Shareware)
  • ExceleTel - TeleTools components for TAPI (Commercial)
  • Regex - Regular Expression Library package (Freeware)
  • TExcellent[...]Printer - TExcellentImagePrinter & TExcellentFormPrinter; Components to print a images & forms. (Commercial)
  • SignSoft - OpenGL component (Commercial)
  • GenoTechs - GTSizer for resolution independence; also GTASCII-lator, a neat little free tool showing the Ascii table (Commercial)
  • IG's Software - ProHelp & HTMLHelp (Shareware)
  • CGI Expert - CGI Component for BCB (Freeware & Shareware)
  • Indy - Internet components (formerly Winshoes) (Freeware)
  • Objective Software Technology - ABC, huge component library (Commercial)
  • Vladimir Gaitanoff Delphi Page - Freeware component library and shareware Midas / BDE Server library (Freeware/Shareware)
  • digitalroom.net - ini file & Forms extension components (Freeware)
  • Dave Baldwin's page - HTML viewer component and others (Freeware/Shareware)
  • Fenestra Technologies' Component Factory - Event Journal (Commercial)
  • TMS Software - huge collection of very useful components, including TAdvStringGrid (Shareware)
  • Zorn Software - Barcode component (Shareware)
  • SandStone - Visual Parse & HtmlParse components (Commercial)
  • Opaque Software - Components (buttons, labels, menus, etc) and experts (Commercial)
  • DelphiFreeStuff.com - listing of Delphi (and C++Builder) freeware components (Freeware)
  • Eminent Domain Software Spelling & Printing components (Commercial)
  • siComponents TsiLang (localizer component) and Resource Builder tool (Commercial)
  • Perfect Design - PerfectSize component, for form sizing (Commercial)
  • Q-Systems Engineering - ElasticForm & WorldGraph (Commercial)
  • ExceptionalMagic - Exception handler (Shareware)
  • Component Localizator library - localization and internationalization tool (Shareware)
  • EldoS components - utilities and controls, both visual and non-visual. (Shareware/Freeware)
  • MarshalSoft - Internet and serial comm components (Shareware)
  • CyberMagice - Adonis (ADO) components (Commercial)
  • First Internet Software House - FileNotification, NT Event Log, VersionLabel and GroupBox components w/source (Freeware)
  • CiceroSoft - interesting HTML components (Commercial)
  • ObjectSight - new home for TopGrid, a nice looking grid control (Commercial)
  • GExperts - The best Expert addin for Delphi & BCB. You'll wonder how you got along without it
  • Jordan Russell's Software - Toolbar97 component & a good looking free Setup utility (Shareware)
  • Colosseum Builders, Inc. - Go to the Source Code page, and click on the link at the top, which will send you here. For some reason, they "no longer support" Inprise products. But you'll find a pretty good Grid here. (Freeware)
  • SwiftSoft - MMTools is an outrageously powerful multimedia component library. Also freeware tools: MP3 BladeEncoder & CDDB Component (Freeware/Commercial)
  • Vista Software - Apollo DB, a BDE replacement component
  • dbRock Software - TSyntaxMemo, a "powerful text editor with user defined syntax highlighting effects". (Commercial)
  • PraxisService - DBGrid, Page, and Tab control components. (Commercial)
  • Torry's Delphi Pages - My first stop when searching for a component. If it isn't here, it isn't anywhere!
  • LMD Innovative Online - LMDTools, a pretty impressive looking component suite. Look for the freeware subset! (Commercial)
  • melander.dk : TGIFImage & a drag 'n' Drop suite (Freeware)
  • OpenGL Component for C++ Builder (Freeware)
  • MWA Software - JPEG & GIF components (Shareware)
  • EnhTech Port I/O - Components for doing port I/O under Win32, including WinNT; TVicRes, a freeware component for getting info on hardware resources (Commercial)
  • DelphiNT - set of Delphi components, including source, to do NT only things like jobs and shares. Not sure if it works with BCB - let me know if you find out! (Freeware)
  • SK Computer Solutions - Lots of VCL stuff, maybe it'll work with BCB, as it includes source (Freeware)
  • Tempest Software, Inc. - Ray Lischner : Ray is BMOC on the Delphi campus, but you can learn alot from his components, books, and source code. OpenTools API is his specialty.
  • Dream Company : Lots of components, including DreamMemo (w/syntax highlighting), DreamInspector (an Object Inspector to add to you app), and Dream Infotree (powerful tree control). (Commercial)
  • UnitOOPS Software - OLE Drag 'n' Drop components (Commercial)
  • BCB and Delphi Freeware Zip Component page - ZIP component (Freeware)
  • BCB-Tools.com: TDx_Draw_Library - component suite that wraps the DX7 SDK (Commercial)
  • DeveloperExpress - lots of components, pretty high prices (Commercial)
  • Greg Lief's Assorted Delphi components. Incredible looking collection of components. (Shareware)
  • Innova Software - Calendar Works, an "appointment book component" (Commercial)
  • Alfa Corporation - a couple of interesting looking file-level components, File Monitor and File Interceptor (Commercial)
  • Magic Software - Numerical and graphical library (Freeware)
  • Stone Mountain Software - Splash screen, About Box, and Serial port components, among others. Look kinda expensive though ($100 for a splash screen? See The ZieglerCollection for a better value!) (Commercial)
  • Woll2Woll Software : InfoPower grid control and 1stClass component library (Commercial)
  • Dejan Crnila Components - ComPort component (Freeware)
  • Mike Shkolnik's components - Data exporter and report generator (Commercial)
  • UtilMind - Large collection of components, from upgrader to TreeComboBox (Freeware and Shareware)
  • VCL Crawler - nice component "search" engine
  • VCLComponents.com - a pretty nice looking set of links to VCL Components
  • Lischke Online - lots of freeware Delphi components w/source for using in BCB. Includes a nice graphics component (GraphicEx), XP Theme manager, and a Virtual Treeview (Freeware)
  • Scalabium - Import/Export, report & Logging components, plus a freeware component library & DBGrid (Freeware and commercial)
  • KS Development - SkinEngine component and other libraries (Commercial)
  • WPTools - Word processing components and a PDF-generator componet (Commercial)
  • destructor.de - XML parser; for Delphi, but there seems to be C++Builder support (Freeware
  • icom - XML Parser for Delphi, rumored to be BCB compatible (Freeware)
  • Alexey Dynnikov's page - PerfUtils component for WinNT Performance API. Also SvCom, for developing service applications. (Freeware/Shareware)
  • ProfGrid - Yet Another Grid Control (Freeware for non-commercial)
  • Jazmine : VCL PIM widgets (Commercial)
  • Fe Software : PIM Flash and Power Tools components (Commercial)
  • Hyrix Technologies : ImageEn component, a nice looking imageprocessing component library. (Shareware)
  • Delphi Pages : Nice looking searchable compilation of components
  • Timur Islamov : Use Jet & ADO without BDE. Also another DBGRID replacement. (Shareware)
  • Pragnaan : WYSIWYG QuickReport filters & TDBLookup replacement components (Commercial)
  • Tools & Comps : TUsersCS, user security component for BDE (Commercial)
  • ESB Professional Computation Suite - Data Entry & usage components (Commercial)
  • Defined Systems : Defined Forms, a form component. Also, "BCB-Friendly web hosting", whatever that means. (Commercial)
  • SQL Direct : BDE replacement for accessing SQL servers. (Commercial)
  • VssConneXion : Integrate SourceSafe with BCB (Shareware)
  • Martin Stainsby's CBuilder components : Panel, label and speedbutton components with MouseEnter/MouseLeave events (Freeware)
  • Octopod Group : IDE for Borland command line compiler, as well as an ActiveX web server component (Commercial)
  • Parsifal Software : source code for an expression parser (Freeware)
  • OpenXML : Delphi source code for XML parsers
  • Project JEDI : Joint Endeavor of Delphi Innovators; an opensource library useful routines, somewhat compatible with C++Builder (Freeware)
  • TRichView : Very fancy text control, with HTML tags, tables, XML, etc. (Commercial)
  • SDL Component Suite : Bunch of cool looking mathematical components, like FFT, tables, Matrix, etc. (Commercial)
  • JFActiveSoft : Home of JfControls, a big package of controls, from localizing to special forms (Commercial)
  • Abakus VCL : component package containing clocks, meters, dials, sliders, etc. (Commercial)
  • JAPOS : Textured panel & LabelURL components (Freeware)
  • O&A Productions : Combo Boxes and DTalk, a speech component (Commercial)
  • IOCOMP Software : Instrumentation Component Products (Commercial)
  • Almediadev : Skin component (Commercial)
  • SCT Associates, Inc. : ACE Reporter, a DB report generator (Commercial)
  • DelphiCity : Nice looking component directory
  • Advantage Database : Database server and C++Builder TDataSet descendant components (Commercial)
  • Addictive Software : Spell check/thesaurus component suite (Commercial)
  • Electro-Concept Mauricie : PlusMemo (enhanced memo component) & PlusSpinEdit (Commercial)
  • ESB Consultancy : ESB Professional Computation Suite, for data entry & manipulation (Commercial)
  • Elevate Software : DBISAM component (Commercial)
  • Benny Hill's programming page : includes the source for TSystemInfo (Freeware)
  • Samara Delphi & Interbase club : Component database, like Torry's
  • Asta Technology Group : They say "Components for N-Tier Development". Looks like cool components to connect to a database via the Interent. (Commercial)
  • Zeos Library : Components for accessing MySql, PostgreSql, SQL Server, Oracle and Interbase (Freeware)
  • Borshack Software Solutions : PIM & TreeView components. (Commercial)
  • Tamarack Associates : Rubicon, a full text search engine (includes Borland newsgroup search on the site) (Commercial)
  • Random64 : A random number generator class (w/source) for BCB (Freeware)
  • Doc-O-Matic : Pretty cool looking tool for generating documentation via code comments (Shareware)
  • Crystal Soft : Some good looking DB tools, including DBStructure, for displaying and saving a database schema (Shareware and Freeware)
  • Toolsfactory : Some great BCB tools, including a Pro version of the builtin ClassExplorer and the wonderful Doc-O-Matic (Freeware & Commercial)
  • Leabeau Software : Agent, Association & RegExtension Components (Freeware)
  • Korzh.com : Localizer tool & Simple Query builder (Commercial)
  • Robert Davies C++ Libraries : Some interesting C++ libraries, for things like matrix work, and random numbers
  • Dmitry G. Barabash: ProVCL, a component library (Freeware)
  • NativeDB : Direct Sybase SQL Anywhere database access component (Commercial)
  • AppControls : "Advanced Application" and "Disk" Control packs (Shareware)
  • MicorOLAP : MySQL Direct Access Component & EasyMAP for GIS stuff (Commercial)
  • Fast-Report : FastReport, a reporting tool component (Commercial)
  • Pragnaan : PsQRFilters, an export filter for QuickReports, so you can export your reports to things like JPG & HTML. (Commercial)
  • ShazamWare : SQL Query building component & Report Wizard (Commercial)
  • Quasidata : Transfer@once (drag 'n' drop/clipboard interface) and DbAltGrid, an interesting looking take on DBGrid (Commercial)
  • EMS HiTech : QuickExport components, for exporting your data. Some other Interbase support tools & components too. (Commercial)
  • Golden Hawk Technology : CD-ROM burning C++ class library (Commercial)
  • IBObjects : Direct Interbase access components (Commercial/Freeware)
  • PragSoft : UML tool (Commercial)
  • Binary Magic : Magic CD Burner, a component for Data CD burning (Commercial)
  • Soford : Easy Editor, a set of components for flexible editors & memos & Scheduler, a PIM component (Commercial)
  • TSM @ CryptoCentral.com : Encryption components (Commercial)
  • AfalinaSoft : XL Report, an Excel report generator & data analysis component (Commercial)
  • Epocalipse : VssConneXion, a Visual Source Safe expert (Commercial)
  • Almico's Delphi Components : TEnhTwain, a TWAIN component (Commercial)
    Friday, January 11 2002
  • Murt Software : GmPrintSuite, a set of print, preview, and reporting components (Freeware/Commercial)
  • GlyFX : Cool looking icons & glyphs (Freeware & Commercial)
  • alan-warriner.co.uk : TToneGen, for generating sounds; TPushKeys, for sending keystrokes; and TRotatePanel (Freeware)
  • bome.com : A few free Delphi components w/source, as well as a cool tool called Restorator (shareware), which rips resources from program files (Freeware)
  • Components4Developers : See especially kbmWABD, the Web Application Builder component. Way cool. (Freeware)
    Wednesday, January 16 2002
  • AnimatedMenus.com : powerful-looking menu component suite (Commercial)
  • AidAim Software : EasyTable, a BDE replacement, & EasyCompression, for TStream compresion & encryption (Commercial) Also, GLVisir (OpenGL), CalcExpress & DiffExpress (math expression interpreters), ZipForge (Commercial), MsgCommunicator (Messenger SDK - commercial) (Freeware)
    Thursday, January 17 2002
  • ihSoftware : Delphi components, but they come with source, so they should work with BCB. See especially Widgets, which are caption bar buttons (Freeware)
  • BCB-Center : It has 2 useful components, one for FileVersion and one for a URL label (Freeware)
    Added Saturday, January 26 2002
  • BCB DX Library : A SourceForgeproject to integrate BCB & DirectX (Freeware)
  • Dave's RAD Pages : 3rd part components, icons, scripts & applications available for download
  • Smaller Animals Software : ImgSource, an image processing DLL that should be usable by C++Builder (Commercial)
  • Steve's WebShed : 3D Labels, Gradient, List & URLLabel components (Freeware)
    Added Wednesday, January 30 2002
  • bit-arts : come cool looking tools, including installation, compression and even Fusion, which includes DLLs, OCXx, etc right into your executable (Commercial)
  • PasScipt : Pascal Scripting engine (Commercial)
    Added Thursday, February 7 2002
  • Run-Time Systems : Scripting Expert to use VBScript in the IDE (Freeware)
    Added Tuesday, February 12 2002
    Added Monday, February 18 2002
  • Orcka Development : A cool looking component suite, with spell checker, versioninfo, addinmanager, etc (Freeware)
    Added Friday, February 22 2002
  • Snowbound : Nice looking graphic control, with PDF and everything (Commercial)
    Added Monday, February 25 2002
  • AP Software : Some neat source code, like a DynDS, Volume control, Web cam, OpenGL, etc (Freeware)
    Added Thursday, March 7 2002
  • Dew Research : MtxVec, numberical library (Commercial)
  • Zeal Softsudio : NTPort for using the parallel port, and some ActiveX controls (yech) (commercial)
    Added Wednesday, March 13 2002
  • AntiDebug : Software security for your application (Commercial)
  • Setup Generator : Simple installer (Freeware)
  • Inno Setup : Nice looking installation utility. Even mentions BDE (Freeware)
  • JGsoft HelpScribble, a Help file creator and DeployMaster, an installation program (Commercial)
    Added Thursday, March 14 2002
  • Colin Wilson's Delphi Site : Some excellent utilities, including a resource editor (Freeware)
    Added Friday, March 22 2002
  • Kever : EzPlan-IT, scheduling/PIM component (Commercail)
    Added Wednesday, April 3 2002
  • ZipTV components : compression related component suite - zip, rar, etc. (Shareware)
  • base2 Technologies : zlib, a zip component (Freeware)
  • Delphi Zip Beta Page : Delphi Zip, good in C++Builder too (Freeware)
  • Devrace : Athlant (integrate SCC API (Visual C++) VCS into IDE), FIBPlus (Interbase interface), a couple of freeware IDE experts (Commercial)
  • RouteWare : Routing and pathfinding component (Freeware and commercial)
  • EC Software : Help Suite, components for integrating help into your app (Freeware)
    Added Friday, May 10 2002
  • Crystal Component : CAD, vector, polyline, CanvasText & Magnify components (Commercial)
    Added Monday, May 13 2002
  • AToZed Software : See FinalBuilder, for automating your BCB builds (Freeware)
  • MaxSpace : An IDE enhancement that hides the menu bar and Object Inspector (Shareware)
  • 9rays.net : Tree, Grid, Editbox, etc components (Commercial)
  • LLionsoft : IIPDFLib, a PDF file generator. (Commercail)
    Added Tuesday, June 11 2002
  • Shell Plus : Good looking Windows shell extension components (Commercial)
    Added Wednesday, July 10 2002
  • Cypress Software : Cypress Enable, a VBA-compatible scripting engine (Commercial)
  • Interbase Provider : Component to use OLE DB to access InterBase (Commercial)
  • Binary Magics : Magic CD/DVD burner component (Commercial)
  • Soft-haus Solutions : see the Developer Downloads for some freeware stuff, including a TAPI component (Freeware)
    Added Wednesday, July 17 2002
  • Delphi Cryptography Page : DCPcrypt, an excellent looking cryptographic component (Freeware)
    Added Friday, July 19 2002
  • Billenium Effects : Special effects component (Commercial)
    Added Tuesday, August 6 2002
  • BS/1 - BS/1 Professional is an integrated time billing and accounting system that is free for Delphi/BCB programmers. (Freeware)
    Added Friday, September 20 2002
  • TurboDB : small and fast database (Commercial)
  • IonWorx ICE License, software copy protection component (Commercial)
    Added Monday, September 23 2002
  • FlexCel : Excel spreadsheet interface component - create, read, and write them. It just says Delphi, but I imagine it might work with BCB as it includes source code (Freeware)
  • puterSoft.com : FilterBox (set filter conditions - Freeware), a calendar and FontColor component too (Commercial)
  • G32.org : Delphi (and BCB) graphics programming projects, include G32, a "modular graphics library" (Freeware)
  • winsoft : lots of components to check out, including Joystick, MemPort, etc (Commercial)
    Added Thursday, September 26 2002
  • NAG Software Solutions : nice looking component suite, as well as a software copy-protection component (Commercial)
    Added Monday, September 30 2002
    Added Wednesday, October 9 2002
  • Helpware : kit to integrate HTMLHelp into your BCB program (Freeware)
  • J-P Moreau's Math Page : A whole bunch of small C++ programs to do math, like Bessel functions, etc. (Freeware)
    Added Thursday, October 10 2002
  • SaM-Solutions : Component Set for NT, which lots of NT specific functionality (Commercial)
    Added Tuesday, December 10 2002
  • Ortus Software : shell components and shell dialogs (Commercial)
  • Report Manager : Reporting application & components (Freeware)
    Added Thursday, January 9 2003
  • progdigy : DSPack, a set of components to write multimedia apps (Freeware)
  • DataStead : some video processing and web page scanning components, as well as DFMToSource, a utility for translating DFM files into source code (Commercial)
    Added Friday, July 11 2003
  • Fastexters.com: A Collection of experts to make working with projects easier (Commercial)
  • Contour Components : ContourCube "a high-performance OLAP component which allows to add OLAP functionality" (sic) (Commercial)
  • Sunisoft : SUI Pack, "a suit of enhanced GUI components", a good looking and low priced suite of scheme/skin components; SMLPack, a localization package, and TinyDB, small database components (Commercial)
  • DeepSoftware : nrCommLib (serial port), Storage Library (persistant storage), nrWinCalc (control Windows calculator); Syntax Suite, for syntax highlightings (Shareware)
  • Van Tumour Industries : Graphics Components, Property Editors, Containers, Cross Version (help maintain source code between BCB versions), and docs. (Freeware)
  • Translate C++ Exceptions to VCL Exceptions : Excellent library for catching C++ Exceptions and turning them into VCL ones
    Added Monday, July 28 2003
  • Sonixsoft : Some neat little components, like a Tray Icon, Web Label, tree & list view. In German, but you get the sourcecode (Freeware
  • >Tiriss : ChangeRes utility, that allows you to change the version info via the command line (Commercial) Added Monday, August 25 2003
  • PAX Script - interpreted object-oriented scripting language component (Commercial)
  • Turbopwer : An amazing list of components, released to Open Source. Search for "Turbopower" on SourceForge.net. (Freeware)
    Added Wednesday, August 27 2003
  • Gnostice : PDFToolkit, QuickReport exporting, and eDocEngine for creating documents in BCB. (Commercial)
  • Waler.com : QuickReport exporters. (Commercial)
  • QuSoft : the "home of QuickReport". Samples, examples, and updates for QuickReport. (Commercial)
    Added Thursday, September 11 2003
  • XMLSoft.org : XML C parser and toolkit library. (Freeware)
  • Code Coffer : Code obfuscation tool, as well as DcuProtector, a way to protect DCU files & VCL components. (Commercial)
    Added Monday, September 29 2003
  • Ionworx : software protection, ID and licensing software (Commercial)
    Added Thursday, November 20 2003
  • EurekaLog : For catching exceptions and reporting code location. (Commercial)
    Added Monday, December 1 2003
  • SecureBlackBox : component for SSL, SSH and other secure Internet protocols. (Commercial)
  • Rodolfo Frino's C++Builder stuff : Lots of cool stuff, including examples and a free Advanced Image List component. Also nice tutorial on creating a colored button (Freeware)
    Added Wednesday, December 10 2003
  • VolgaDB Engine : DB Engine & control components. (Freeware and commercial)
  • Component Ace : BDE replacement database and some compression components. (Commercial)
  • Nexus : BDE DB Engine replacement (Commercial)
  • Turbopower Foundry : An archived copy of the late, much-lamented Turbopower Foundry, which contains extra stuff for all the Turbopower components and products (Freeware)

Help

Some useful sites to get help on C++Builder. Includes tutorials, FAQs, utilities, and examples.
Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

원문 링크 : [펌] MDI 폼에서 Client 영역에 배경 그리기 2

MDI 폼에서 Client 영역에 배경 그리기 2 - 더욱 쉽게

작성자 : 장성호  (nasilso)  읽음 : 415    2007-05-25 오전 1:57:59

================================================

MDI 폼의 메인 화면에 배경 이미지 그리기 - 여기는 직접 작성한 것임.

1, 메인 화면의 클래스에 다음과 같이 정의한다.

    TCanvas *MDICanvas;
   Graphics::TBitmap *imgBG;

2. 폼의 FormCreate 함수에 다음을 넣어 초기화한다.

void __fastcall TCMain::FormCreate(TObject *Sender)
{
    MDICanvas=new TCanvas;
    MDICanvas->Handle=GetDC(ClientHandle);
    imgBG = new Graphics::TBitmap;
    if (FileExists ("bgfile.bmp"))
        imgBG->LoadFromFile("bgfile.bmp");
}

3. 폼의 FormResize 함수에 다음과 같이 넣어준다.

void __fastcall TCMain::FormResize(TObject *Sender)
{
    MDICanvas->Draw(0, 0, imgBG);
}

4. 폼의 FormPaint 함수에 다음과 같이 넣어준다.

void __fastcall TCMain::FormPaint(TObject *Sender)
{
    MDICanvas->Draw(0, 0, imgBG);
} // 여기까지

================================================

여기 tip 게시판에 이미 같은 내용의 tip을 민병권님께서 올려놓은 것이 있습니다.

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=357

위에 tip은 한가지가 문제가 있던데.. Form을 Resize할 때는 WM_ERASEBKGND 메세지가 발생하지 않아 잔상이 있거나 이상하게 되더군요

위 팁에 문제점을 보완하려면 그냥 Form의 Resize 이벤트에서 다시 한번 똑같이 그려주면 문제가 해결되더군요

----------------------------------------------------------------------------------

[쉬운방법]

그런데 위 팁에서 또하나 불편한것은 sub-classing을 해야한다는 것입니다.
뭐 서브클래싱이 그렇게 어렵고 복잡한것은 아니지만....

sub-classing 하지않고 하는 쉬운방법은 그냥 Form의 Repaint 이벤트와 Resize 이벤트에 배경을 그려주면 됩니다.

여기서 중요한 것은 Form의 Handle과 MDI Client의 Handle이 다르다는데 있습니다.
그러므로 그려져야할 HDC도 Form의 DC인 Canvas에 그려주는 것이 아니라 MDI Client의 HDC에 그려줘야 하는것입니다.


즉 아래와 같이 간단히 하면 됩니다.

문론 bmp에 배경 이미지가 들어있어야 하구요

//---------------------------------------------------------------------------

void __fastcall TDLG_MAIN::FormPaint(TObject *Sender)
{
        HDC DC=GetDC(ClientHandle);
       BitBlt(DC,0,0,bmp->Width,bmp->Height,bmp->Canvas->Handle ,0,0,SRCCOPY    );
       //StretchBlt(DC, 0, 0, Width, Height, bmp->Canvas->Handle, 0, 0, bmp->Width, bmp->Height, SRCCOPY);
}

//---------------------------------------------------------------------------

void __fastcall TDLG_MAIN::FormResize(TObject *Sender)
{
        HDC DC=GetDC(ClientHandle);
       BitBlt(DC,0,0,bmp->Width,bmp->Height,bmp->Canvas->Handle ,0,0,SRCCOPY    );
       //StretchBlt(DC, 0, 0, Width, Height, bmp->Canvas->Handle, 0, 0, bmp->Width, bmp->Height, SRCCOPY);

}

//---------------------------------------------------------------------------

[응용 방법]

이를 좀더 응용하여서 하는 쉬운 방법이 있는데요

VCL의 Canvas를 이용하는 방법입니다.

여기 tip에 보면 김태선님의 "바탕화면을 TCanvas로 만들어 주는 클래스"라는 것을 응용한 것으로 http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=551 TCanvas를 하나 new 하시고 그 canvas의 HDC를 MDI Clinet 영역의 HDC로 설정해주면 됩니다
그러면 아래와 같이 Paint 나 Resize 이벤트때 코딩이 더 짧아질 수 있습니다.

TCanvas *MDICanvas;

void __fastcall TDLG_MAIN::FormCreate(TObject *Sender)
{
       MDICanvas=new TCanvas;
       MDICanvas->Handle=GetDC(ClientHandle);
}

//---------------------------------------------------------------------------

void __fastcall TDLG_MAIN::FormPaint(TObject *Sender)
{
        MDICanvas->Draw(0,0,bm_bg);
}

//---------------------------------------------------------------------------

void __fastcall TDLG_MAIN::FormResize(TObject *Sender)
{
      MDICanvas->Draw(0,0,bm_bg);
}

//---------------------------------------------------------------------------

그리고 또 이렇게 Client영역에 Canvas로 접근할 수 있으므로 아래와 같이 쉽게 원하는 내용을 client 영역에 그릴수 있습니다.

void __fastcall TDLG_MAIN::FormPaint(TObject *Sender)
{
        MDICanvas->Draw(0,0,bm_bg);
        MDICanvas->Brush->Color=clRed;
        MDICanvas->Pen->Color=clWhite;
        MDICanvas->Rectangle(Rect(100,100,200,300));

}

//---------------------------------------------------------------------------

요즘에 MDI로 프로그램하는경우가  많이 없는것 같기는 한데 혹 누군가 필요하실 수도 있을것 같아서 올려봅니다.

Posted by 새우날다 Trackback 2 Comment 0

댓글을 달아 주세요

원문 링크 : [펌] C++ Builder에서 MDI 메인화면에 배경 그리기


MDI폼에 Bitmap 이미지 넣기.

작성자 : 민병권  (minbk)  읽음 : 1204    2002-08-14 오후 5:37:22

MDI폼 배경에 bmp 이미지 화일을 표시하는 방법입니다.

cpp-faq자료를 뒤지다보니 방법이 있네요.

Modal폼, MdiChild폼 등을 더 뛰워도 전혀 이상 없습니다.
아주 간단합니다.

먼저, MDI폼 위에 TImage를 하나 올려놓고, 여기에 Picture 속성에 표시 하고자하는 그림을 하나 선택합니다(확장자가 bmp인 것만 되네요. 다른것도 될려나?......).

그런다음 소스를 아래와 같이 하세요.

1. MDI폼의 헤더화일에 다음을 추가하세요.

    TFarProc MdiInstance;
    TFarProc OldMdiWindowProc;
    void __fastcall MdiWndProc(TMessage &Message);

2. MDI폼 소스 부분에 다음을 추가하세요.

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)        // <-- 폼 생성시 자동으로 만들어지죠..
//---------------------------------------------------------------------------
{
    // 아래의 3줄 추가.
    MdiInstance = MakeObjectInstance(MdiWndProc);
    OldMdiWindowProc = (void *)(GetWindowLong(ClientHandle, GWL_WNDPROC));
    SetWindowLong(ClientHandle, GWL_WNDPROC, (LONG)(MdiInstance));
}

//---------------------------------------------------------------------------
// 임의로 새로 만든 함수입니다.
void __fastcall TForm1::MdiWndProc(TMessage &Message)
//---------------------------------------------------------------------------
{
    if (Message.Msg == WM_ERASEBKGND){
        Message.Result = 0;
        HDC DC = (HDC)Message.WParam;
        StretchBlt(DC, 0, 0, Width, Height,
        Image1->Canvas->Handle, 0, 0,
        Image1->Picture->Bitmap->Width,
        Image1->Picture->Bitmap->Height,
        SRCCOPY);
    }
    else Message.Result = CallWindowProc((FARPROC)OldMdiWindowProc,

    ClientHandle, Message.Msg,
    Message.WParam, Message.LParam);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
//---------------------------------------------------------------------------
{
    SetWindowLong(ClientHandle, GWL_WNDPROC,
    (LONG)OldMdiWindowProc);
    FreeObjectInstance(MdiInstance);

    Action = caFree;
}

끝. 아주 간단하죠?


김유미
이거 하니까 실행 프로그램 아래의 배경이 그림으로 따라 다니네요...  2004/01/27 21:27

민병권
Form의 Scaled 속성을 False로 변경 하세요.
예전에 Win98에 Builder 5.0으로 테스트 했을때는 Scaled 속성에 관계없이 잘 됐는데,
지금은 Win2000에 Builder 6.0으로, Form을 MDIForm으로 만 하면 투명폼이 되어 버리네요.

Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

원문 링크 : 17개의 CSS 초보 소스


17개의 CSS 초보 소스

1. form 문에서 여백없애기

<form .....> 이런 문은 기본적인 여백이 있습니다.
그럴때마다 style="margin:0px;padding:0px;" 라고 쓰기는 상당히 귀찮은 일일겁니다.
항상 읽어 들이는 style.css 가 있다면 다음과같이 추가 합니다.

form {padding:0px; margin:0px}

라고 추가 해 놓으면 어떠한 문장에서든지 form 문은 여백이 없어집니다.

2. 셀렉트 박스에서 내용 우측정렬시키기

<SELECT style="direction:rtl;">
  <OPTION>내용</OPTION>
  <OPTION>내용</OPTION>
</SELECT>

3. 간단히 링크점선 없애기

보통 링크의 점선을 없애기위해 자바스크립트를 이용하거나 onfocus=this.blur(); 이런식으로 처리를 하시죠?

css 한 줄로 텍스트링크, 이미지링크 모두 처리가 가능합니다.

a { selector-dummy : expression(this.hideFocus=true);}

4. 셀렉트박스(풀다운)에 색깔 넣기

<select style="font-size:9pt;">
  <option>select color
  <option style="background-color:000000;color:white" value="#000000">black

5. 자주 사용하는 css 속성

- 글꼴장식.
text-decoration : 장식 글꼴 장식을 지정한다.(none,underline,overline,line-through,blink)
none : 장식 제거
underline : 밑줄
overline : 윗줄
line-through : 문자 중간에 선 첨가
blink : 문자 깜빡임

- 글씨굵기.
font-weight : 굵기 글꼴의 굵기를 설정한다.
normal : 보통 글씨
bold : 굵은 글씨
lighter : 한단계 가는 폰트
bolder : 한단계 굵은 폰트
수치 : 100 ~ 900 (normal : 400, bold : 700에 해당)
font-style : (normal,italic,oblique)

- 글씨체.
font-family : 글꼴 이름, 글꼴 이름, … 글꼴 종류를 지정할 때 사용한다.
serif : 명조체 (예 : Times New Roman, 바탕체)
sans-self : 고딕체 (예 : Helvetaca, Arial, 돋움체)
cursive : 필기체 계열 (예 : Caflisch Script, Adobe Poetica)
fantasy : 장식 글꼴 (예 : Critter, Cottonwood )
monospace : 고정 비례 폭 글꼴(예 : Courier New)
* 글꼴의 이름은 하나만 지정할 수도 있고 컴마(,)로 구분해서 여러 개를 한꺼번에 지정할 수도 있다. 여러 개를 지정할 경우는 지정되어 있는 글꼴 중 앞에서부터 시스템에 설치되어 있는 글꼴이 적용된다.

- 문자간격.
Spacing
letter-spacing : 문자간격
text-indent : 문자 들여쓰기
line-height : 줄과 줄사이의 간격을 지정하기 위해 사용
word-spacing : 단어간격 문자와 문자간의 간격이나 단어와 단어의 간격을 설정할 때 사용한다.
normal : 표준 글자간격 설정 (Default)
실수값 + 단위 : 표준간격에서 늘어나거나 줄어들게 된다.
text-align속성으로 양쪽 정렬(justify)로 설정하면 지정한 결과가 나오지 않는 경우도 있다.

- 링크걸기.
A:link { 스타일 } 보통상태의 링크를 의미한다.
A:visited { 스타일 } 이미 방문한 링크를 의미한다.
A:active { 스타일 } 클릭했을 때의 링크를 의미한다.
A:hover { 스타일 } 커서가 올라갔을 때의 링크를 의미한다.

- 자주사용되는 글씨.
한글 | "굴림체","돋움체","바탕체","궁서체"
영어 | "Arial","tahoma","verdana","Impact","times","sans-serif","geneva","courier"

- Filter.
FILTER: shadow(color=navy,direction=135);
FILTER: glow(color=navy,direction=135);

- 글씨 세워쓰기.
writing-mode:tb-rl
글씨를 세우는 역활을 하는것 입니다

6. 문자열 자르기

<style="overflow:hidden; text-overflow:ellipsis;"><nobr>

가로크기가 지정되어 있는 경우에 사용할 수 있다.

7 . 둥근모서리 구현

<style type="text/css">
.rtop, .rbottom{ display:block; background: #FFFFFF; }
.rtop *, .rbottom *{ display: block; height: 1px; overflow: hidden; }

.r1 { margin: 0 5px; background: #DEDEDE; height: 1px; }
.r2 { margin: 0 3px; background: #FFFFFF; border: solid #DEDEDE; border-width: 0 2px; }
.r3 { margin: 0 2px; background: #FFFFFF; border: solid #DEDEDE; border-width: 0 1px; }
.r4 { margin: 0 1px; background: #FFFFFF; border: solid #DEDEDE; border-width: 0 1px;  height: 2px; }

.r5 { margin: 0 2px; background: #DEDEDE; height: 1px; }
.r6 { margin: 0 1px; background: #FFFFFF; border: solid #DEDEDE; border-width: 0 1px;  height: 1px; }

.rc { background:#FFFFFF; border: solid #DEDEDE; border-width: 0 1px; }
</style>

<div style="width:400px;">
<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>
<div class="rc" style="text-align:center;">Round Table type 1</div>
<b class="rbottom"><b class="r4"></b><b class="r3"></b> <b class="r2"></b><b class="r1"></b></b>
</div>
<br />
<div style="width:400px;">
<b class="rtop"><b class="r5"></b><b class="r6"></b></b>
<div class="rc" style="text-align:center;">Round Table type 2</div>
<b class="rbottom"><b class="r6"></b><b class="r5"></b></b>
</div>

8. CSS 만으로 구현하는 롤오버 이미지

<head> 와 </head> 사이에 아래의 구문을 삽입합니다.

<style type="text/css">
a.rollover img { border-width:0px; display:inline; }
a.rollover img.over { display:none; }
a.rollover:hover { border:0px }
a.rollover:hover img { display:none; }
a.rollover:hover img.over { display:inline; }
</style>

그리고  <body>의 적당한 위치에 아래의 형식을 응용하여 이미지를 삽입하면 됩니다.

<a href="주소" class="rollover"><img src="기본이미지"><img src="마우스 오버시 보여줄 이미지" class="over"></a>

9. 일반적인 텍스트에 롤오버 적용하기

<span OnMouseOver="this.style.color='#blue'" OnMouseOut="this.style.color=''">내용</span>

10. 스타일을 이용한 링크에 여러가지 효과 주기

<style type="text/css">
<!--
A:link {color:#666666; text-decoration:none}
A:visited {color:#666666; text-decoration:none}
A:active {color:#666666; text-decoration:none}
A:hover {color:#blue; text-decoration:none}
-->
</style>

위와 같은 기본적인 스타일 소스에서 A:hover 를 잘 이용하면 다양한 링크효과를 줄 수 있습니다.

- 밑 줄 A:hover {color:#blue; text-decoration:underline}
- 굵 게 A:hover {color:#blue; text-decoration:none; font-weight:bold}
- 크 게 A:hover {color:#blue; text-decoration:none; font-size:11pt}
- 배경색 A:hover {color:#blue; text-decoration:none; background-color:#blue; padding:2 2 0}
- 테두리 A:hover {color:#blue; text-decoration:none; border:1 solid #blue; padding:2 3 0}
- 점선테두리 A:hover {color:#blue; text-decoration:none; border:1 dotted #blue; padding:2 3 0}
- 누르는효과 A:hover {color:#blue; text-decoration:none; top:2; left:2} 

11. 스타일을 중복 적용하자

.daerew { color:black;}
.daerew_bold { font-weight:bold; }

위의 스타일 두 개를 적용시킬 때 일반적으로 아래와 같이 사용합니다.

<span class=daerew>내용</span></span></font>

이것을 보다 편하게 아래와 같이하면 여러개를 손 쉽게 적용할 수 있습니다.

<span class='daerewdaerew_bold'>내용</span>

12. 스타일시트를 이용한 글씨 세로로 쓰기

<center>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<div style="writing-mode:tb-rl;">
내용을 적어주세요^^
</div>
</td>
</tr>
</table>
</center>

13. 가로 스크롤바만 없애기

<body>에 아래의 구문을 추가해주면 됩니다.

style="overflow-x:hidden;overflow-y:scroll"

[ ------------------------------ 예문 ------------------------------]
<body style="overflow-x:hidden;overflow-y:scroll">

● 위의 소스가 적용이 안된다면 아래처럼해보세요

<body scroll=auto style="overflow-x:hidden">

14. 자동 줄바꿈을 통한 테이블 크기 고정

테이블 작업을 하다가 글의 내용이 길어지면 지정된 테이블의 크기가 늘어나는 현상이 있을 수 있습니다. 이럴 때 테이블의 크기를 고정시키고 자동으로 줄바꿈을 해주는 기능입니다.

<table> 태그의 아래의 구문을 넣습니다.

style="table-layout:fixed;"

[ ------------------------------ 예문 ------------------------------ ]
<table style="table-layout:fixed;">

● 적용 시키고자 하는 셀에 아래의 구문을 넣습니다.

style="word-break:break-all;"

[ ------------------------------ 예문 ------------------------------ ]
<td style="word-break:break-all;">

15. 점선 테이블 만들기

<fieldset style="line-height:15pt; padding:20; border-width:2; border-style:dotted; width:200; height:70; border-color: red;">
내용
</fieldset>

2라는 숫자는 점선테이블의 두께를 정합니다.
boder-style:dotted는 선의 종류를 점선으로 하라는 명령이죠.

16. 홈페이지 이중 링크 시키기

한 화면에서 두가지 형태의 링크를 주고 싶은경우가 있죠.

서로 색을 달리하거나 폰트크기도 달리한다든지..
CSS에서 링크하는 것들은 pseudo-classes 라고 합니다.
pseudo-classes는 활용에 따라 다양하게 적용을 할 수 있습니다.
아래는 간단한 예제입니다.

<html>
<head>
<style type="text/css">
A.blue:link {color: blue}
A.red:link {color: red}
A.foot:active {color: purple}
A.foot:visited {color: blue}
</style>
</head>

<body>

<a href="http://startdesign.net" class="blue"> blue</a>

<a href="http://startdesign.net" class="red"> red</a>
</body>
</html>

17. 웹폰트 적용시키기

1. 웹폰트파일을 서버에 올린다.
(웹폰트는 확장자가 *.eot파일이나 mwf 등이 있습니다)

2. 인클루드할 스타일 시트를 작성한다.

ex) 작성예.
'daerew.css' 라는 파일이 있다고 가정하면 그 내용은 아래와 비슷할겁니다.
@font-face { font-family:WEB정; src:url(웹정주소) }
body, table, tr, td, select, input, div, form, textarea { background:#ffffff; color:#000000; font-size:9pt; font-family:WEB정; line-height:100% }

3. css를 적용할 html페이지의 head 사이에 다음의 소스를 적용합니다.
<style type="text/css">
@import url(daerew.css);
</style>

이렇게 소스가 적용이 되면 body, table, tr, td, select, input, div, form, textarea 가 들어가는 모든 부분의 텍스트가 웹정체로 나타나게 되는것이죠 ..

※ 일반적으로 폰트피아(http://www.fontpia.co.kr [새창에서 열기])의 웹정체를 많이 사용하지만 유료라는 단점이 있죠....

무료 웹폰트도 많은데요 검색사이트에서 웹폰트 치면 많이 나온답니다.

무료 웹폰트 중에는 오늘과내일(http://ttcgi.com [새창에서 열기])의 티티체를 많이 사용하더군요.

Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

동적 선택하기(시도 및 시군구 선택)

<!-- 단순 무식한 지역 선택하기입니다. -->

<!-- 특별시, 광역시를 제외한 시의 구는 없는 상태입니다. 필요한 분은 추가하세요. -->

<!-- 예 : 경기도 고양시의 경우 고양시 일산동구, 고양시 일산서구, 고양시 덕양구로 나누면 되겠죠. 즉 고양시를 빼고 위의 세군데를 추가하면 됩니다. -->

<!-- 시도 순서를 바꿀 때는 regionArray[]의 배열 순서도 맞게 바꾸세요. -->

<head>
<title>동적 선택 예제</title>

<!-- 아래의 스크립트를 <head>와 </head> 사이에 넣는다. -->

<!-- --------- 여기부터 ---------- -->
<script language=javascript>
<!--
function deleteAll(f)
{
for (var i=0; i<f.length; i++) {
  f.options[i] = null;
}
f.length = 0;
}

function changeRegion(selform)
{
 var regionArray = Array();
 var regionNone = Array ( "시군구선택" );
 var regionSeoul = Array( "시군구선택", "강남구",  "강동구",  "강북구",
    "강서구",  "관악구",  "광진구",  "구로구",  "금천구",
    "노원구",  "도봉구",  "동대문구",  "동작구",  "마포구",
    "서대문구",  "서초구",  "성동구",  "성북구",  "송파구",
    "양천구",  "영등포구",  "용산구",  "은평구",  "종로구",
    "중구",   "중랑구");
 var regionIncheon = Array ( "시군구선택", "계양구",  "남구",   "남동구",
    "동구",   "부평구",  "서구",   "연수구",  "중구",
    "강화군",  "옹진군");
 var regionDaejeon = Array ( "시군구선택", "대덕구",  "동구",   "서구",
    "유성구",  "중구");
 var regionGwangju = Array ( "시군구선택", "광산구",  "남구",   "동구",
    "북구",   "서구");
 var regionDaegu = Array ( "시군구선택", "남구",   "달서구",  "동구",
    "북구",   "서구",   "수성구",  "중구",   "달성군");
 var regionUlsan = Array ( "시군구선택", "남구",   "동구",   "북구",
    "중구",   "울주군");
 var regionBusan = Array ( "시군구선택", "강서구",  "금정구",  "남구",
    "동구",   "동래구",  "부산진구",  "북구",   "사상구",
    "사하구",  "서구",   "수영구",  "연제구",  "영도구",
    "중구",   "해운대구",  "기장군");
 var regionGyeonggi = Array ("시군구선택", "고양시",  "과천시",  "광명시",
    "광주시",  "구리시",  "군포시",  "김포시",  "남양주시",
    "동두천시",  "부천시",  "성남시",  "수원시",  "시흥시",
    "안산시",  "안성시",  "안양시",  "양주시",  "오산시",
    "용인시",  "의왕시",  "의정부시",  "이천시",  "파주시",
    "평택시",  "포천시",  "하남시",  "화성시",  "가평군",
    "양평군",  "여주군",  "연천군");
 var regionGangwon = Array ( "시군구선택", "강릉시",  "동해시",  "삼척시",
    "속초시",  "원주시",  "춘천시",  "태백시",  "고성군",
    "양구군",  "양양군",  "영월군",  "인제군",  "정선군",
    "철원군",  "평창군",  "홍천군",  "화천군",  "횡성군");
 var regionChungbuk = Array ("시군구선택", "제천시",  "청주시",  "충주시",
    "괴산군",  "단양군",  "보은군",  "영동군",  "옥천군",
    "음성군",  "증평군",  "진천군",  "청원군");
 var regionChungnam = Array ("시군구선택", "계룡시",  "공주시",  "논산시",
    "보령시",  "서산시",  "아산시",  "천안시",  "금산군",
    "당진군",  "부여군",  "서천군",  "연기군",  "예산군",
    "청양군",  "태안군",  "홍성군");
 var regionJeonbuk = Array ( "시군구선택", "군산시",  "김제시",  "남원시",
    "익산시",  "전주시",  "정읍시",  "고창군",  "무주군",
    "부안군",  "순창군",  "완주군",  "임실군",  "장수군",  "진안군");
 var regionJeonnam = Array ( "시군구선택", "광양시",  "나주시",  "목포시",
    "순천시",  "여수시",  "강진군",  "고흥군",  "곡성군",
    "구례군",  "담양군",  "무안군",  "보성군",  "신안군",
    "영광군",  "영암군",  "완도군",  "장성군",  "장흥군",
    "진도군",  "함평군",  "해남군",  "화순군");
 var regionGyeongbuk = Array ("시군구선택", "경산시",  "경주시",  "구미시",
    "김천시",  "문경시",  "상주시",  "안동시",  "영주시",
    "영천시",  "포항시",  "고령군",  "군위군",  "봉화군",
    "성주군",  "영덕군",  "영양군",  "예천군",  "울릉군",
    "울진군",  "의성군",  "청도군",  "청송군",  "칠곡군");
 var regionGyeongnam = Array ("시군구선택", "거제시",  "김해시",  "마산시",
    "밀양시",  "사천시",  "양산시",  "진주시",  "진해시",
    "창원시",  "통영시",  "거창군",  "고성군",  "남해군",
    "산청군",  "의령군",  "창녕군",  "하동군",  "함안군",
    "함양군",  "합천군");
 var regionJeju = Array ( "시군선택",  "서귀포시",  "제주시",  "남제주군",  "북제주군");

 regionArray[0] = regionNone;
 regionArray[1] = regionSeoul;
 regionArray[2] = regionIncheon;
 regionArray[3] = regionDaejeon;
 regionArray[4] = regionGwangju;
 regionArray[5] = regionDaegu;
 regionArray[6] = regionUlsan;
 regionArray[7] = regionBusan;
 regionArray[8] = regionGyeonggi;
 regionArray[9] = regionGangwon;
 regionArray[10] = regionChungbuk;
 regionArray[11] = regionChungnam;
 regionArray[12] = regionJeonbuk;
 regionArray[13] = regionJeonnam;
 regionArray[14] = regionGyeongbuk;
 regionArray[15] = regionGyeongnam;
 regionArray[16] = regionJeju;

 deleteAll(selform.wr_gugun); // 지금 있는 목록 삭제하기.
 
 sidoindex = selform.wr_sido.selectedIndex;
 gugunlen = regionArray[sidoindex].length;
 cur_sido = selform.wr_sido.options[selform.wr_sido.selectedIndex].value;

 selform.wr_gugun.length=gugunlen;

 for (i=0; i<gugunlen; i++) {
  selform.wr_gugun.options[i] = new Option(regionArray[sidoindex][i], regionArray[sidoindex][i]);
  if (cur_sido == swr_sido && swr_gugun == regionArray[sidoindex][i])
   selform.wr_gugun.options[i].selected = true;
 }
}

function initRegion()
{
 var sido = Array ( "시도선택",  "서울특별시", "인천광역시", "대전광역시",
      "광주광역시", "대구광역시", "울산광역시", "부산광역시",
      "경기도",  "강원도",  "충청북도",  "충청남도",
      "전라북도",  "전라남도",  "경상북도",  "경상남도",  "제주도");
 sidolen = sido.length;
 document.fwrite.wr_sido.options.length = sidolen;
 for(var i=0; i<sidolen; i++) {
  document.fwrite.wr_sido.options[i] = new Option(sido[i], sido[i]);
  if (swr_sido == sido[i]) {
   document.fwrite.wr_sido.options[i].selected = true;
   document.fwrite.wr_sido.selectedIndex = i;
  }
 }
}
-->
</script>
<!-- --------- 여기까지 ---------- -->
</head>

<body>

<!-- 아래의 form 부분을 body 태그 안에 넣는다. -->

<!-- --------- 여기부터 ---------- -->
<form name="fwrite">
지 역 :
<select name="wr_sido" OnChange="changeRegion(fwrite)"></select>
<select name="wr_gugun"></select> * 지역을 선택하세요.<br>

<script language="javascript">
<!--
// php 변수 wr_sido와 wr_gugun에 저장된 값을 기본 선택값으로 초기화한다.
// wr_sido와 wr_gugun에 저장된 값이 없으면 첫 항목으로 초기화한다.
var swr_sido = "<?=$wr_sido?>"; // php 변수를 자바스크립트 변수로 저장 - 현재 선택된 시도.
var swr_gugun = "<?=$wr_gugun?>"; // php 변수를 자바스크립트 변수로 저장 - 현재 선택된 시군구.
initRegion();
changeRegion(fwrite);
-->
</script>
<input type="submit" value="확 인">
</form>
<!-- --------- 여기까지 ---------- -->
</body>

<!-- 위의 내용을 모두 한 다음 파일을 php 파일로 저장한다.

<!-- http://사이트주소/파일이름.php?wr_sido=강원도&wr_gugun=인제군 -->

<!-- 주소에 위와 같이 입력하면 시도 부분에 강원도가, 시군구 부분에 인제군이 기본 선택된 상태로 화면이 나타난다. 즉 php의 $wr_sido에 강원도가, $wr_gugun에 인제군이 들어간 상태로 초기화된다. -->

Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

스크롤바 따라 다니는 메뉴 스크립트

여기저기 여러가지 프로그램이 있지만 이게 좋더군요.

어디서 나온건지는 잘 모르겠지만, 지식인에 많이 돌아다니고 있네요.

지식인에 있는 소스들을 잘 봐도 대부분은 html 태그로 인해서 잘린 부분들도 있고, 그래서 정상적으로 동작하지 않는 것들이 많습니다.

완전하게 동작하도록 수정하고, 설명 추가했습니다.

아래 <html>부터 </html>까지 복사해서 확장자를 html로 저장하면 바로 동작합니다.

=======================================================

<html>
<head>
<title>스크롤되는 메뉴</title>
<style type="text/css">
body, td { font-family:Tahoma,굴림; font-size:9pt; color:#222222; }
</style>
<!-- 우선 <head>와 </head> 사이에 다음의 스크립트를 넣는다. -->
<!-- =========== 여기부터 =========== -->
<script language="javascript">
<!--
var stmnLEFT = 610;    // 스크롤메뉴의 좌측 위치
var stmnGAP1 = 148;    // 페이지 헤더부분의 여백
var stmnGAP2 = 50;    // 스크롤시 브라우저 상단과 약간 띄움. 필요없으면 0으로 세팅
var stmnBASE = 0;    // 스크롤메뉴 초기 시작위치 (아무렇게나 해도 상관은 없지만 stmnGAP1과 약간 차이를 주는게 보기 좋음)
var stmnActivateSpeed = 100; // 움직임을 감지하는 속도 (숫자가 클수록 늦게 알아차림)
var stmnScrollSpeed = 7;  // 스크롤되는 속도 (클수록 늦게 움직임)

var stmnTimer;

// 저장된 쿠키에서 스크롤 여부를 읽어온다.
function ReadCookie(name)
{
var label = name + "=";
var labelLen = label.length;
var cLen = document.cookie.length;
var i = 0;

 while (i < cLen) {
  var j = i + labelLen;

  if (document.cookie.substring(i, j) == label) {
  var cEnd = document.cookie.indexOf(";", j);
  if (cEnd == -1) cEnd = document.cookie.length;
  return unescape(document.cookie.substring(j, cEnd));
  }
  i++;
}
return "";
}

// 스크롤 여부를 쿠키로 저장한다.
function SaveCookie(name, value, expire)
{
var eDate = new Date();
eDate.setDate(eDate.getDate() + expire);
document.cookie = name + "=" + value + "; expires=" + eDate.toGMTString()+ "; path=/";
}

// 메뉴의 위치를 갱신한다.
function RefreshStaticMenu()
{
var stmnStartPoint, stmnEndPoint, stmnRefreshTimer;

 stmnStartPoint = parseInt(STATICMENU.style.top, 10);
stmnEndPoint = document.body.scrollTop + stmnGAP2;
if (stmnEndPoint < stmnGAP1) stmnEndPoint = stmnGAP1;

 stmnRefreshTimer = stmnActivateSpeed;
if (stmnStartPoint != stmnEndPoint ) {
  stmnScrollAmount = Math.ceil(Math.abs(stmnEndPoint - stmnStartPoint) / 15);
  STATICMENU.style.top = parseInt(STATICMENU.style.top, 10) + ((stmnEndPoint < stmnStartPoint) ? -stmnScrollAmount : stmnScrollAmount);
  stmnRefreshTimer = stmnScrollSpeed;
}
stmnTimer = setTimeout ("RefreshStaticMenu();", stmnRefreshTimer);
}

// 스크롤 고정 여부를 확인하여 상태를 저장한다.
function ToggleAnimate()
{
if (!ANIMATE.checked) {
  RefreshStaticMenu();
  SaveCookie("ANIMATE", "true", 300);
}
else {
  clearTimeout(stmnTimer);
  STATICMENU.style.top = stmnGAP1;
  SaveCookie("ANIMATE", "false", 300);
}
}

// 메뉴를 초기화한다.
function InitializeStaticMenu()
{
STATICMENU.style.left = stmnLEFT;
if (ReadCookie("ANIMATE") == "false") {
  ANIMATE.checked = true;
  STATICMENU.style.top = document.body.scrollTop + stmnGAP1;
}
else {
  ANIMATE.checked = false;
  STATICMENU.style.top = document.body.scrollTop + stmnBASE;
  RefreshStaticMenu();
}
}
-->
</script>
<!-- =========== 여기까지 =========== -->

</head>

<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<!-- =========== 여기부터 =========== -->
<!-- 실제로 나타나야 될 내용을 <div>와 </div> 사이에 넣는다. -->
<!-- div의 위치나 크기는 적당하게 바꾼다. -->
<!-- 테이블을 이용해서 필요한 모양으로 만든다. -->
<!-- 위치고정이란 체크박스에 체크하면 스크롤이 되지 않는다. -->
<DIV id="STATICMENU" style="width:180px; height:350px; position:absolute; left:600px; top:0px; z-index:9;">
<table width="180" cellspacing="0" cellpadding="0" border="1" bordercolor="#cccccc">
<tr>
<td><iframe src='http://weather.superboard.com/wxbn.cgi?db=59_section21&skin=yellow002' width='180' height='118' allowtransparency='true' frameborder='no' scrolling='no' leftmargin='0' topmargin='0' marginwidth='0'></iframe></td>
</tr>
<tr>
<td align=center>첫번째 줄</td>
</tr>
<tr>
<td align=center><a href="http://www.naver.com">네이버로가기</a></td>
</tr>
</table>
<center><INPUT id="ANIMATE" onclick="ToggleAnimate();" type="checkbox">위치고정</center>
</div>

<!-- 스크롤 메뉴를 초기화하는 부분 -->
<script language="javascript">
InitializeStaticMenu(); // 스크롤메뉴를 초기화하는 자바스크립트
</script>
<!-- =========== 여기까지 =========== -->
</body>

</html>

Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

원문 링크 : db와 동적연결 콤보박스-원리


db와 동적연결 콤보박스-원리

이건 진짜 유용한 팁이 아닌가 싶어 최근 제가 알아낸 자바스크립트와 데이터베이스 연동법을 기술할가 합니다.

참고로 클래스룸에 있는 무슨 [동적연결 셀렉트], 제가 뭐라 하긴 그렇지만 가히 눈속임이 아닐까 싶습니다.
그게 정말 디비와 연동되는 동적 셀렉트일까?
이게 진짜 동적 연결 셀렉트문입니다.

또 하나의 참고 <예제가 없습니다.>

본래 자바스크립트는 데이터베이스를 연동할 수 없다고 알고 있으나 php와 연결하면 가능하다는걸 알고 계신 분이 엄청 많으실 겁니다.
하지만 페이가 떠 있는 상태에서 리스트를 선택했을 때 콤보 박스나 텍스트 박스에 디비에서 읽은 값을 써 넣기란,,,, 웹페이지를 다시 읽어(리플레쉬) 뿌리는 수밖엔 없을걸루 압니다.

하지만 제가 만든 기법은 웹페이지는 그대로 놔두고 그 웹페이지의 객체 값을 바꿔 버리는 방법입니다.

(사설이 길었나?)

궁금하시저???

먼저 웹페이지를 왕창 짭니다.(한페이지짜리)
물론 input문이나 select문으로 객체들을 만들고 이름도 주셔야조.
그 전에 form 명령을 주구 거기두 이름을 줘야 합니다.

다 되셨나요?
그렇다면 select문에 스크립트 함수를 가동할수 있도록

onChange="모모모()"

를 추가하세요.
이거 뭔지 아시져?? 모르시면 자바스크립트부터 공부하셔야 합니다.
그리구 스크립트를 짭니다.

<script>
parent.TEMP.location = "./dblist.php?findid"+document.form이름.객체이름.options[document.form이름.객체이름.selectedIndex].value
</script>

그리구 dblist.php파일을 만드는데 거긴 평상시와 똑같이 내용 추출하는 것 만들구, 추출 내용을 뿌려줘야 하잖아요,
뿌려줄때 자바스크립트 방식으루 뿌려줘야 한다는 겁니다.

echo("<script>");
echo("function add(){ ");
echo("parent.cp.form이름.객체이름.value='$row[0]'; ");
echo("}"):
echo("</script>");

글구 이 스크립트를 실행하셔야 겠죠?

그건 아시죠?

일반 html에서 자바스크립트만 실행시키고 싶을때 하는방법 다아시죠?

그럼 문제는
parent.cp
parent.TEMP
이 두개가 문젭니다.

프레임을 쪼개세요

rows="*,1"

요것두 무슨 말인지 아시겠죠?
안보이게 하나 쪼개는 겁니다. 쪼개긴 쪼갠거죠
그래서 * 요거에다가 cp라는 이름 할당하고 나머지 1로 쪼갠거에다가 TEMP라는 이름 할당하는 겁니다.
그리고 cp라고 이름 할당한 곳에 열심히 만드신 폼을 로딩하시구요.
그러면 다 된겁니다.

cp에 올려진 문서중 select문의 내용이 바뀌면 모모모() 자바스크립트 함수가 실행되고 셀렉트문의 값을 php로 넘기는데 그 php는 사람눈에 거의 안보이는 프레임에 로딩되서 실행되고 그 결과는 또 cp 프레임의 객체들에게 전달하는 겁니다.

어때요 쥑이죠??

어느정도 지식이 있으신 분들만 이해할 수 있게 쓴것에 대해 대단히 죄송합니다.(글재주가 없습니다.)

궁금사항이나 모르시겠는 것은 저에게 메일을
캬캬캬

Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

메일 주소 입력 스크립트

<html>
<head>
<title></title>
<script language="javascript">
<!--

// 이메일 주소를 입력하는 중 @을 입력하면 자동으로 선택 상자가 없어진다.

// @을 입력하지 않고 선택 상자에서 선택해도 된다.
function selectEmail(f)
{
  if (f.email1.value.indexOf(@) > 0) {
    f.email0.style.display='none';
  }
  else {
    f.email0.style.display='';
  }
}
-->
</script>
</head>
<body>
<form name="regi" method="post" action="register.html">

<input size="10" name="email1" value="" style="ime-mode:disabled" onKeyPress="selectEmail(regi)">
<select name="email0" class=sbody>
<option value="" >선택하세요</option>
<option value="@hanmail.net" >한메일</option>
<option value="@hotmail.com" >핫메일</option>
<option value="@chol.com" >천리안</option>
<option value="@dreamwiz.com" >드림위즈</option>
<option value="@empal.com" >엠팔</option>
<option value="@hanmir.net" >파란</option>
<option value="@hitel.net" >하이텔</option>
<option value="@korea.com" >코리아닷컴</option>
<option value="@lycos.co.kr" >라이코스</option>
<option value="@nate.com" >네이트</option>
<option value="@naver.com" >네이버</option>
<option value="@netian.net" >네띠앙</option>
<option value="@gmail.com" >구글</option>
</select>
</form>
</body>
</html>

Posted by 새우날다 Trackback 1 Comment 0

댓글을 달아 주세요

원문 링크 : 날짜 선택 스크립트


날짜 선택 스크립트

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-kr">
<script>

var old='';
function view(name,flag)
{
  if(flag == 'first') {
    calStr.style.pixelTop = img1.offsetTop + 30;
    calStr.style.pixelLeft = img1.offsetLeft;

    show_cal('',calStr,'first');
  }
  else {
    calStr.style.pixelTop = img2.offsetTop + 30;
    calStr.style.pixelLeft = img2.offsetLeft;

    show_cal('',calStr,'last');
  }

  submenu=eval(name+".style");

  if(old!=submenu) {
    if(old!='') {
        old.visibility='hidden';
    }
    submenu.visibility='visible';
    old=submenu;
  }
  else {
    submenu.visibility='hidden';
    old='';
  }
}

function insert(str1,str2,str3,str4)
{
  if(str4 == 'first') {
    document.date.m_year.value = str1;
    document.date.m_month.value = str2;
    document.date.m_day.value = str3;

    calStr.style.visibility='hidden';
    old='';
  }
  else {
    document.date.n_year.value = str1;
    document.date.n_month.value = str2;
    document.date.n_day.value = str3;

    calStr.style.visibility='hidden';
    old='';
  }
}
</script>
</head>

<body>
<form name=date>
<input type=text name=m_year size=4>년
<input type=text name=m_month size=2>월
<input type=text name=m_day size=2>일
[<a href="javascript:view('calStr','first')" name=img1>검색</a>]부터

<input type=text name=n_year size=4>년
<input type=text name=n_month size=2>월
<input type=text name=n_day size=2>일
[<a href="javascript:view('calStr','last')" name=img2>검색</a>]까지</form>
<br>
<div id=calStr style='position:absolute; top:50; left:150; visibility:hidden; width:; z-index:1 ;'></div>

<script language="JavaScript">
<!--
//자바함수 라이브러리에 추가했으면 하는 함수들..
function lpad(str,fill,leng)
{
  var n = leng - str.length;
  var out ="";
  for (i =0; i < n; i++) out = out + fill;
  out=out+str;
  return out;
}

//parseInt에서는 '08'을 8진수로 인식해서 0이나 NaN을 돌려준다
function toInt(str)
{
  i=0;
  while(1) {
    if(str.substr(0,1)=='0') {str=str.substr(1,str.length)};
    else break;
    i++;
  }
  return parseInt(str);
}

//기념일에 해당하는 배열 전역변수(이는 서버사이드에서 동적으로 생성시켜줘야함);
//알아서 적용시킬것...
//var anniversary = new Array(3,7,9,23,25);

function show_cal(selectDate,calDivObj,flag)
//selectDate이슈가 되는 날짜, calDivObj달력을 뿌릴 DIV태그 아이디
{
  //전역변수들 세팅
  var selectDate = ''+selectDate; //전역변수1 - 이슈가 되는 날짜 지정
  today = new Date();
  toDate = today.getYear() + lpad(''+(today.getMonth()+1),'0',2) + lpad(''+today.getDate(),'0',2); // 오늘날짜 지정
  //alert(toDate);
  if (selectDate == '') {
    selectDate=toDate;
  }

  var preMonDate;
  var nextMonDate;
  preMonDate= selectDate.substr(0,4)+lpad(''+(toInt(selectDate.substr(4,2))-1),'0',2)+selectDate.substr(6,2);
  nextMonDate= selectDate.substr(0,4)+lpad(''+(toInt(selectDate.substr(4,2))+1),'0',2)+selectDate.substr(6,2);
  //alert(selectDate+":"+ preMonDate +":"+ nextMonDate);
  if(selectDate.substr(4,2)=='01') preMonDate= (toInt(selectDate.substr(0,4))-1) + '12' + selectDate.substr(6,2);
  if(selectDate.substr(4,2)=='12') nextMonDate= (toInt(selectDate.substr(0,4))+1) + '01' + selectDate.substr(6,2);

  //alert(selectDate+":"+ preMonDate +":"+ nextMonDate);

  var firstDay = getFirstDay(selectDate.substr(0,4), selectDate.substr(4,2));
  // 첫번째 요일의 숫자값
  var lastDay = getLastDay(selectDate.substr(0,4), selectDate.substr(4,2)); // 마지막 요일의 숫자값
  var daysOfMonth = getDaysOfMonth(selectDate.substr(0,4), selectDate.substr(4,2)); // 28, 29, 30, 31 중 하나
  //alert(firstDay+":"+ lastDay +":"+ daysOfMonth);
  var calString;//달력 HTML을 저장하기 위한 변수다.
  calString="<table bgcolor=#ffffff border='0' cellspacing='0' cellpadding='0' style='font-size:11px'>";

  calString+="<tr style='color=#0000C6'><td colspan='7' align=center>";
  calString+="<a href=\"javascript:show_cal('"+ (parseInt(selectDate.substr(0,4))-1)+ selectDate.substr(4,4) +"',"+ calDivObj.id +");\">◀◀</a> ";
  calString+="<a href=\"javascript:show_cal('"+ preMonDate +"',"+ calDivObj.id +");\">◀</a> ";
  calString+="<font size='2'><b>"+selectDate.substr(0,4)+"<font color='#FF6600'>"+selectDate.substr(4,2)+"</font></b></font> ";
  calString+="<a href=\"javascript:show_cal('"+ nextMonDate +"',"+ calDivObj.id +");\">▶</a> ";
  calString+="<a href=\"javascript:show_cal('"+ (parseInt(selectDate.substr(0,4))+1)+ selectDate.substr(4,4) +"',"+ calDivObj.id +");\">▶▶</a>";
  calString+="</td></tr>";

  calString+="<tr height='5'><td colspan='7'></td></tr>";
  calString+="<tr height=19>";
  calString+="<td width='19' align=center style='color=#C60000'>일</td>";
  calString+="<td width='19' align=center>월</td>";
  calString+="<td width='19' align=center>화</td>";
  calString+="<td width='19' align=center>수</td>";
  calString+="<td width='19' align=center>목</td>";
  calString+="<td width='19' align=center>금</td>";
  calString+="<td width='19' align=center style='color=#0000C6'>토</td>";
  calString+="</tr>";

  // 달력 textfield 출력
  for (var i=0; i < Math.ceil( (firstDay+daysOfMonth)/7 ); i++) {
    calString+="<tr valign='middle' height='19'>";
    for (var j=1; j <= 7; j++) {
      colNum=i*7+j; //달력의 각 칸의 칼럼을 번호로 지정

      if (colNum>firstDay && colNum<firstDay+daysOfMonth+1) { //달력에 날짜가 나와야 되는 조건
        thisDay=colNum-firstDay; //이날의 날짜(숫자)

        //요일의 색깔을 결정하자 ㅋㅋ
        if(colNum%7==1) {tdColor="C60000";}
        else if(colNum%7==0) {tdColor="0000C6";}
        else {tdColor="333333";}

        //기념일일 경우에 링크를 걸어주자.. ㅋㅋ 스타일을 않걸었더니 색깔이 파란색으로@@;; 스타일도 알아서..
        /*
        for(k=0;k<anniversary.length;k++) {
          if(thisDay==anniversary[k]) {
            thisDay="<a href='http://어디로 갈까.. ㅠ.ㅠ;;'><b>"+thisDay+"</b></a>";
            break;
          }
        }
        */

        /*
        년도 : selectDate.substr(0,4)
        달 : selectDate.substr(4,2)
        날짜 : thisDay
        */
        calString+="<td align=center><a href=\"javascript:insert('"+selectDate.substr(0,4)+"','"+selectDate.substr(4,2)+"','"+thisDay+"','"+flag+"')\">"+thisDay+"</a></td>";
        //calString+="<td align='center' onClick='' style='color=#"+tdColor+"' onMouseOver=this.style.background='#e4e4e4'; onMouseOut=this.style.background='#ffffff';>"+"<a href=view.php?year="+selectDate.substr(0,4)+"&month="+selectDate.substr(4,2)+"&day="+thisDay+">"+thisDay+"</a></td>";
      }
      else {
        calString+="<td></td>";
      }
      //calString+="<td>"+colNum+"</td>";
    }
    calString+="</tr>";
  }
  calString+="</table>";

  //저장된 스트링변수를 DIV레이어에 올리자..
  calDivObj.innerHTML=calString;
}

/////////////////////////날짜 관련된 연산 함수들////////////////////////////
function getDaysOfMonth(year, month)
{
  var DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // Non-Leap year Month days..
  var lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // Leap year Month days..

/*
  Check for leap year ..
  1.Years evenly divisible by four are normally leap years, except for...
  2.Years also evenly divisible by 100 are not leap years, except for...
  3.Years also evenly divisible by 400 are leap years.
*/
  if ((year % 4) == 0) {
    if ((year % 100) == 0 && (year % 400) != 0)
      return DOMonth[toInt(month)-1];

    return lDOMonth[toInt(month)-1];
  }
  else
    return DOMonth[toInt(month)-1];
}

// 첫번째 요일 구하기
function getFirstDay(year, month)
{
  var tmpDate = new Date();
  tmpDate.setDate(1);
  tmpDate.setMonth(toInt(month)-1);
  tmpDate.setFullYear(year);
  return tmpDate.getDay();
}

// 마지막 요일 구하기
function getLastDay(year, month)
{
  var tmpDate = new Date();
  tmpDate.setDate( getDaysOfMonth(year,month) );
  tmpDate.setMonth(toInt(month)-1);
  tmpDate.setFullYear(year);
  return tmpDate.getDay();
}
/////////////////////////날짜 관련된 연산 함수들////////////////////////////

//-->
</script>

</body>
</html>

Posted by 새우날다 Trackback 1 Comment 0

댓글을 달아 주세요